// export def_base_level , def_amount_of_people , def_skill_level , def_starting_resources , def_shipments_density , def_shared_vision , def_people_respawning , def_amount_of_apemen ; export is_depot , number_of_breastworks , number_of_people , skill_level , starting_crates , starting_resources , shipments_density , morale_decreasing_time , amount_of_apemen , amount_of_siberit , respawning_time_min , respawning_time_max , respawning_time_delay_min , respawning_time_delay_max ; export Side_Teams , Teams ; export Side_Positions , Side_Nations , Team_Game ; export Position_Sides ; export depot_def , breastworks_def , start_def , normal_oil_deposits_locations , extra_oil_deposits_locations , normal_sib_deposits_locations , extra_sib_deposits_locations , battle_flags_id ; export def_difficulty_level , difficulty_level ; export rudestroyedBuildings ; export AIDepotDest ; export randomedColors ; export sideP1 , sideP2 ; var commander ; var global_units , global_defined , soldiers_created ; var neng , nsci , nmech , nsol ; export def_Tech_Level , def_upgrade_tl , tech_level , initial_level ; function read_multiplayer_and_game_parameters ; var i ; begin
   0: LD_INT 0
   2: PPUSH
   3: PPUSH
// if Multiplayer then
   4: LD_OWVAR 4
   8: IFFALSE 62
// begin Your_Side := mp_player_side ;
  10: LD_ADDR_OWVAR 2
  14: PUSH
  15: LD_OWVAR 7
  19: ST_TO_ADDR
// Side_Positions := mp_sides_positions ;
  20: LD_ADDR_EXP 25
  24: PUSH
  25: LD_OWVAR 17
  29: ST_TO_ADDR
// Side_Teams := mp_sides_teams ;
  30: LD_ADDR_EXP 23
  34: PUSH
  35: LD_OWVAR 15
  39: ST_TO_ADDR
// Side_Nations := mp_sides_nations ;
  40: LD_ADDR_EXP 26
  44: PUSH
  45: LD_OWVAR 16
  49: ST_TO_ADDR
// Teams := mp_teams ;
  50: LD_ADDR_EXP 24
  54: PUSH
  55: LD_OWVAR 12
  59: ST_TO_ADDR
// end else
  60: GO 205
// begin Your_Side := 1 ;
  62: LD_ADDR_OWVAR 2
  66: PUSH
  67: LD_INT 1
  69: ST_TO_ADDR
// Side_Positions := [ 0 , 2 , 0 , 0 , 0 , 0 , 1 , 0 ] ;
  70: LD_ADDR_EXP 25
  74: PUSH
  75: LD_INT 0
  77: PUSH
  78: LD_INT 2
  80: PUSH
  81: LD_INT 0
  83: PUSH
  84: LD_INT 0
  86: PUSH
  87: LD_INT 0
  89: PUSH
  90: LD_INT 0
  92: PUSH
  93: LD_INT 1
  95: PUSH
  96: LD_INT 0
  98: PUSH
  99: EMPTY
 100: LIST
 101: LIST
 102: LIST
 103: LIST
 104: LIST
 105: LIST
 106: LIST
 107: LIST
 108: ST_TO_ADDR
// Side_Teams := [ 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
 109: LD_ADDR_EXP 23
 113: PUSH
 114: LD_INT 1
 116: PUSH
 117: LD_INT 1
 119: PUSH
 120: LD_INT 0
 122: PUSH
 123: LD_INT 0
 125: PUSH
 126: LD_INT 0
 128: PUSH
 129: LD_INT 0
 131: PUSH
 132: LD_INT 0
 134: PUSH
 135: LD_INT 0
 137: PUSH
 138: EMPTY
 139: LIST
 140: LIST
 141: LIST
 142: LIST
 143: LIST
 144: LIST
 145: LIST
 146: LIST
 147: ST_TO_ADDR
// Side_Nations := [ 1 , 1 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
 148: LD_ADDR_EXP 26
 152: PUSH
 153: LD_INT 1
 155: PUSH
 156: LD_INT 1
 158: PUSH
 159: LD_INT 0
 161: PUSH
 162: LD_INT 0
 164: PUSH
 165: LD_INT 0
 167: PUSH
 168: LD_INT 0
 170: PUSH
 171: LD_INT 0
 173: PUSH
 174: LD_INT 0
 176: PUSH
 177: EMPTY
 178: LIST
 179: LIST
 180: LIST
 181: LIST
 182: LIST
 183: LIST
 184: LIST
 185: LIST
 186: ST_TO_ADDR
// Teams := [ [ 1 , 2 ] ] ;
 187: LD_ADDR_EXP 24
 191: PUSH
 192: LD_INT 1
 194: PUSH
 195: LD_INT 2
 197: PUSH
 198: EMPTY
 199: LIST
 200: LIST
 201: PUSH
 202: EMPTY
 203: LIST
 204: ST_TO_ADDR
// end ; for i := 1 to 8 do
 205: LD_ADDR_VAR 0 2
 209: PUSH
 210: DOUBLE
 211: LD_INT 1
 213: DEC
 214: ST_TO_ADDR
 215: LD_INT 8
 217: PUSH
 218: FOR_TO
 219: IFFALSE 257
// if Multiplayer_GetPlayerIsSpec ( i ) then
 221: LD_VAR 0 2
 225: PPUSH
 226: CALL_OW 530
 230: IFFALSE 255
// Side_Positions := Replace ( Side_Positions , i , 0 ) ;
 232: LD_ADDR_EXP 25
 236: PUSH
 237: LD_EXP 25
 241: PPUSH
 242: LD_VAR 0 2
 246: PPUSH
 247: LD_INT 0
 249: PPUSH
 250: CALL_OW 1
 254: ST_TO_ADDR
 255: GO 218
 257: POP
 258: POP
// Position_Sides := [ 0 , 0 , 0 , 0 , 0 , 0 ] ;
 259: LD_ADDR_EXP 28
 263: PUSH
 264: LD_INT 0
 266: PUSH
 267: LD_INT 0
 269: PUSH
 270: LD_INT 0
 272: PUSH
 273: LD_INT 0
 275: PUSH
 276: LD_INT 0
 278: PUSH
 279: LD_INT 0
 281: PUSH
 282: EMPTY
 283: LIST
 284: LIST
 285: LIST
 286: LIST
 287: LIST
 288: LIST
 289: ST_TO_ADDR
// for i := 1 to 8 do
 290: LD_ADDR_VAR 0 2
 294: PUSH
 295: DOUBLE
 296: LD_INT 1
 298: DEC
 299: ST_TO_ADDR
 300: LD_INT 8
 302: PUSH
 303: FOR_TO
 304: IFFALSE 351
// if Side_Positions [ i ] then
 306: LD_EXP 25
 310: PUSH
 311: LD_VAR 0 2
 315: ARRAY
 316: IFFALSE 349
// Position_Sides := Replace ( Position_Sides , Side_Positions [ i ] , i ) ;
 318: LD_ADDR_EXP 28
 322: PUSH
 323: LD_EXP 28
 327: PPUSH
 328: LD_EXP 25
 332: PUSH
 333: LD_VAR 0 2
 337: ARRAY
 338: PPUSH
 339: LD_VAR 0 2
 343: PPUSH
 344: CALL_OW 1
 348: ST_TO_ADDR
 349: GO 303
 351: POP
 352: POP
// Team_Game := Side_Teams [ your_side ] ;
 353: LD_ADDR_EXP 27
 357: PUSH
 358: LD_EXP 23
 362: PUSH
 363: LD_OWVAR 2
 367: ARRAY
 368: ST_TO_ADDR
// if Multiplayer then
 369: LD_OWVAR 4
 373: IFFALSE 494
// begin def_base_level := GetMultiplayerSetting ( 0 ) ;
 375: LD_ADDR_EXP 1
 379: PUSH
 380: LD_INT 0
 382: PPUSH
 383: CALL_OW 426
 387: ST_TO_ADDR
// def_amount_of_people := GetMultiplayerSetting ( 1 ) ;
 388: LD_ADDR_EXP 2
 392: PUSH
 393: LD_INT 1
 395: PPUSH
 396: CALL_OW 426
 400: ST_TO_ADDR
// def_skill_level := GetMultiplayerSetting ( 2 ) ;
 401: LD_ADDR_EXP 3
 405: PUSH
 406: LD_INT 2
 408: PPUSH
 409: CALL_OW 426
 413: ST_TO_ADDR
// def_starting_resources := GetMultiplayerSetting ( 3 ) ;
 414: LD_ADDR_EXP 4
 418: PUSH
 419: LD_INT 3
 421: PPUSH
 422: CALL_OW 426
 426: ST_TO_ADDR
// def_shipments_density := GetMultiplayerSetting ( 4 ) ;
 427: LD_ADDR_EXP 5
 431: PUSH
 432: LD_INT 4
 434: PPUSH
 435: CALL_OW 426
 439: ST_TO_ADDR
// def_amount_of_apemen := GetMultiplayerSetting ( 5 ) ;
 440: LD_ADDR_EXP 8
 444: PUSH
 445: LD_INT 5
 447: PPUSH
 448: CALL_OW 426
 452: ST_TO_ADDR
// def_shared_vision := GetMultiplayerSetting ( 10 ) ;
 453: LD_ADDR_EXP 6
 457: PUSH
 458: LD_INT 10
 460: PPUSH
 461: CALL_OW 426
 465: ST_TO_ADDR
// def_people_respawning := GetMultiplayerSetting ( 13 ) ;
 466: LD_ADDR_EXP 7
 470: PUSH
 471: LD_INT 13
 473: PPUSH
 474: CALL_OW 426
 478: ST_TO_ADDR
// def_difficulty_level := GetMultiplayerSetting ( 17 ) ;
 479: LD_ADDR_EXP 37
 483: PUSH
 484: LD_INT 17
 486: PPUSH
 487: CALL_OW 426
 491: ST_TO_ADDR
// end else
 492: GO 554
// begin Randomize ;
 494: CALL_OW 10
// def_base_level = 1 ;
 498: LD_ADDR_EXP 1
 502: PUSH
 503: LD_INT 1
 505: ST_TO_ADDR
// def_amount_of_people = 3 ;
 506: LD_ADDR_EXP 2
 510: PUSH
 511: LD_INT 3
 513: ST_TO_ADDR
// def_amount_of_apemen = 3 ;
 514: LD_ADDR_EXP 8
 518: PUSH
 519: LD_INT 3
 521: ST_TO_ADDR
// def_difficulty_level = 3 ;
 522: LD_ADDR_EXP 37
 526: PUSH
 527: LD_INT 3
 529: ST_TO_ADDR
// def_shipments_density = 0 ;
 530: LD_ADDR_EXP 5
 534: PUSH
 535: LD_INT 0
 537: ST_TO_ADDR
// def_skill_level = 3 ;
 538: LD_ADDR_EXP 3
 542: PUSH
 543: LD_INT 3
 545: ST_TO_ADDR
// def_shared_vision = 1 ;
 546: LD_ADDR_EXP 6
 550: PUSH
 551: LD_INT 1
 553: ST_TO_ADDR
// end ; is_depot := [ 0 , 1 , 1 ] [ def_base_level + 1 ] ;
 554: LD_ADDR_EXP 9
 558: PUSH
 559: LD_INT 0
 561: PUSH
 562: LD_INT 1
 564: PUSH
 565: LD_INT 1
 567: PUSH
 568: EMPTY
 569: LIST
 570: LIST
 571: LIST
 572: PUSH
 573: LD_EXP 1
 577: PUSH
 578: LD_INT 1
 580: PLUS
 581: ARRAY
 582: ST_TO_ADDR
// number_of_breastworks := [ 0 , 0 , 2 ] [ def_base_level + 1 ] ;
 583: LD_ADDR_EXP 10
 587: PUSH
 588: LD_INT 0
 590: PUSH
 591: LD_INT 0
 593: PUSH
 594: LD_INT 2
 596: PUSH
 597: EMPTY
 598: LIST
 599: LIST
 600: LIST
 601: PUSH
 602: LD_EXP 1
 606: PUSH
 607: LD_INT 1
 609: PLUS
 610: ARRAY
 611: ST_TO_ADDR
// number_of_people := [ 9 , 12 , 15 , 24 ] [ def_amount_of_people + 1 ] ;
 612: LD_ADDR_EXP 11
 616: PUSH
 617: LD_INT 9
 619: PUSH
 620: LD_INT 12
 622: PUSH
 623: LD_INT 15
 625: PUSH
 626: LD_INT 24
 628: PUSH
 629: EMPTY
 630: LIST
 631: LIST
 632: LIST
 633: LIST
 634: PUSH
 635: LD_EXP 2
 639: PUSH
 640: LD_INT 1
 642: PLUS
 643: ARRAY
 644: ST_TO_ADDR
// skill_level := [ 3 , 5 , 6 , 7 ] [ def_skill_level + 1 ] ;
 645: LD_ADDR_EXP 12
 649: PUSH
 650: LD_INT 3
 652: PUSH
 653: LD_INT 5
 655: PUSH
 656: LD_INT 6
 658: PUSH
 659: LD_INT 7
 661: PUSH
 662: EMPTY
 663: LIST
 664: LIST
 665: LIST
 666: LIST
 667: PUSH
 668: LD_EXP 3
 672: PUSH
 673: LD_INT 1
 675: PLUS
 676: ARRAY
 677: ST_TO_ADDR
// starting_resources := [ [ 0 , 0 , 0 ] , [ 30 , 0 , 0 ] , [ 50 , 20 , 0 ] , [ 80 , 40 , 20 ] ] [ def_starting_resources + 1 ] ;
 678: LD_ADDR_EXP 14
 682: PUSH
 683: LD_INT 0
 685: PUSH
 686: LD_INT 0
 688: PUSH
 689: LD_INT 0
 691: PUSH
 692: EMPTY
 693: LIST
 694: LIST
 695: LIST
 696: PUSH
 697: LD_INT 30
 699: PUSH
 700: LD_INT 0
 702: PUSH
 703: LD_INT 0
 705: PUSH
 706: EMPTY
 707: LIST
 708: LIST
 709: LIST
 710: PUSH
 711: LD_INT 50
 713: PUSH
 714: LD_INT 20
 716: PUSH
 717: LD_INT 0
 719: PUSH
 720: EMPTY
 721: LIST
 722: LIST
 723: LIST
 724: PUSH
 725: LD_INT 80
 727: PUSH
 728: LD_INT 40
 730: PUSH
 731: LD_INT 20
 733: PUSH
 734: EMPTY
 735: LIST
 736: LIST
 737: LIST
 738: PUSH
 739: EMPTY
 740: LIST
 741: LIST
 742: LIST
 743: LIST
 744: PUSH
 745: LD_EXP 4
 749: PUSH
 750: LD_INT 1
 752: PLUS
 753: ARRAY
 754: ST_TO_ADDR
// starting_crates := [ [ 10 ] , [ 7 , 14 ] , [ 6 , 12 , 18 ] , [ 5 , 10 , 15 , 20 ] ] [ def_starting_resources + 1 ] ;
 755: LD_ADDR_EXP 13
 759: PUSH
 760: LD_INT 10
 762: PUSH
 763: EMPTY
 764: LIST
 765: PUSH
 766: LD_INT 7
 768: PUSH
 769: LD_INT 14
 771: PUSH
 772: EMPTY
 773: LIST
 774: LIST
 775: PUSH
 776: LD_INT 6
 778: PUSH
 779: LD_INT 12
 781: PUSH
 782: LD_INT 18
 784: PUSH
 785: EMPTY
 786: LIST
 787: LIST
 788: LIST
 789: PUSH
 790: LD_INT 5
 792: PUSH
 793: LD_INT 10
 795: PUSH
 796: LD_INT 15
 798: PUSH
 799: LD_INT 20
 801: PUSH
 802: EMPTY
 803: LIST
 804: LIST
 805: LIST
 806: LIST
 807: PUSH
 808: EMPTY
 809: LIST
 810: LIST
 811: LIST
 812: LIST
 813: PUSH
 814: LD_EXP 4
 818: PUSH
 819: LD_INT 1
 821: PLUS
 822: ARRAY
 823: ST_TO_ADDR
// shipments_density := [ 150 , 125 , 100 , 50 ] [ def_shipments_density + 1 ] ;
 824: LD_ADDR_EXP 15
 828: PUSH
 829: LD_INT 150
 831: PUSH
 832: LD_INT 125
 834: PUSH
 835: LD_INT 100
 837: PUSH
 838: LD_INT 50
 840: PUSH
 841: EMPTY
 842: LIST
 843: LIST
 844: LIST
 845: LIST
 846: PUSH
 847: LD_EXP 5
 851: PUSH
 852: LD_INT 1
 854: PLUS
 855: ARRAY
 856: ST_TO_ADDR
// respawning_time_min := [ 0 0$0 , 4 4$00 , 2 2$0 ] [ def_people_respawning + 1 ] ;
 857: LD_ADDR_EXP 19
 861: PUSH
 862: LD_INT 0
 864: PUSH
 865: LD_INT 8400
 867: PUSH
 868: LD_INT 4200
 870: PUSH
 871: EMPTY
 872: LIST
 873: LIST
 874: LIST
 875: PUSH
 876: LD_EXP 7
 880: PUSH
 881: LD_INT 1
 883: PLUS
 884: ARRAY
 885: ST_TO_ADDR
// respawning_time_max := [ 0 0$0 , 9 9$00 , 5 5$0 ] [ def_people_respawning + 1 ] ;
 886: LD_ADDR_EXP 20
 890: PUSH
 891: LD_INT 0
 893: PUSH
 894: LD_INT 18900
 896: PUSH
 897: LD_INT 10500
 899: PUSH
 900: EMPTY
 901: LIST
 902: LIST
 903: LIST
 904: PUSH
 905: LD_EXP 7
 909: PUSH
 910: LD_INT 1
 912: PLUS
 913: ARRAY
 914: ST_TO_ADDR
// respawning_time_delay_min := [ 0 0$0 , 0 0$30 , 0 0$20 ] [ def_people_respawning + 1 ] ;
 915: LD_ADDR_EXP 21
 919: PUSH
 920: LD_INT 0
 922: PUSH
 923: LD_INT 1050
 925: PUSH
 926: LD_INT 700
 928: PUSH
 929: EMPTY
 930: LIST
 931: LIST
 932: LIST
 933: PUSH
 934: LD_EXP 7
 938: PUSH
 939: LD_INT 1
 941: PLUS
 942: ARRAY
 943: ST_TO_ADDR
// respawning_time_delay_max := [ 0 0$0 , 1 1$00 , 0 0$40 ] [ def_people_respawning + 1 ] ;
 944: LD_ADDR_EXP 22
 948: PUSH
 949: LD_INT 0
 951: PUSH
 952: LD_INT 2100
 954: PUSH
 955: LD_INT 1400
 957: PUSH
 958: EMPTY
 959: LIST
 960: LIST
 961: LIST
 962: PUSH
 963: LD_EXP 7
 967: PUSH
 968: LD_INT 1
 970: PLUS
 971: ARRAY
 972: ST_TO_ADDR
// amount_of_apemen := [ 0 , 3 , 6 , 9 ] [ def_amount_of_apemen + 1 ] ;
 973: LD_ADDR_EXP 17
 977: PUSH
 978: LD_INT 0
 980: PUSH
 981: LD_INT 3
 983: PUSH
 984: LD_INT 6
 986: PUSH
 987: LD_INT 9
 989: PUSH
 990: EMPTY
 991: LIST
 992: LIST
 993: LIST
 994: LIST
 995: PUSH
 996: LD_EXP 8
1000: PUSH
1001: LD_INT 1
1003: PLUS
1004: ARRAY
1005: ST_TO_ADDR
// difficulty_level := [ 5 , 7 , 8 , 10 ] [ def_difficulty_level + 1 ] ;
1006: LD_ADDR_EXP 38
1010: PUSH
1011: LD_INT 5
1013: PUSH
1014: LD_INT 7
1016: PUSH
1017: LD_INT 8
1019: PUSH
1020: LD_INT 10
1022: PUSH
1023: EMPTY
1024: LIST
1025: LIST
1026: LIST
1027: LIST
1028: PUSH
1029: LD_EXP 37
1033: PUSH
1034: LD_INT 1
1036: PLUS
1037: ARRAY
1038: ST_TO_ADDR
// end ;
1039: LD_VAR 0 1
1043: RET
// function init_map ; var i , j ; begin
1044: LD_INT 0
1046: PPUSH
1047: PPUSH
1048: PPUSH
// normal_oil_deposits_locations := [ [ 77 , 112 ] , [ 258 , 122 ] ] ;
1049: LD_ADDR_EXP 32
1053: PUSH
1054: LD_INT 77
1056: PUSH
1057: LD_INT 112
1059: PUSH
1060: EMPTY
1061: LIST
1062: LIST
1063: PUSH
1064: LD_INT 258
1066: PUSH
1067: LD_INT 122
1069: PUSH
1070: EMPTY
1071: LIST
1072: LIST
1073: PUSH
1074: EMPTY
1075: LIST
1076: LIST
1077: ST_TO_ADDR
// depot_def := [ [ 62 , 97 , 2 ] , [ 265 , 121 , 5 ] ] ;
1078: LD_ADDR_EXP 29
1082: PUSH
1083: LD_INT 62
1085: PUSH
1086: LD_INT 97
1088: PUSH
1089: LD_INT 2
1091: PUSH
1092: EMPTY
1093: LIST
1094: LIST
1095: LIST
1096: PUSH
1097: LD_INT 265
1099: PUSH
1100: LD_INT 121
1102: PUSH
1103: LD_INT 5
1105: PUSH
1106: EMPTY
1107: LIST
1108: LIST
1109: LIST
1110: PUSH
1111: EMPTY
1112: LIST
1113: LIST
1114: ST_TO_ADDR
// for i in depot_def do
1115: LD_ADDR_VAR 0 2
1119: PUSH
1120: LD_EXP 29
1124: PUSH
1125: FOR_IN
1126: IFFALSE 1200
// start_def := start_def ^ [ [ ShiftX ( i [ 1 ] , i [ 3 ] , 10 ) , ShiftY ( i [ 2 ] , i [ 3 ] , 10 ) ] ] ;
1128: LD_ADDR_EXP 31
1132: PUSH
1133: LD_EXP 31
1137: PUSH
1138: LD_VAR 0 2
1142: PUSH
1143: LD_INT 1
1145: ARRAY
1146: PPUSH
1147: LD_VAR 0 2
1151: PUSH
1152: LD_INT 3
1154: ARRAY
1155: PPUSH
1156: LD_INT 10
1158: PPUSH
1159: CALL_OW 272
1163: PUSH
1164: LD_VAR 0 2
1168: PUSH
1169: LD_INT 2
1171: ARRAY
1172: PPUSH
1173: LD_VAR 0 2
1177: PUSH
1178: LD_INT 3
1180: ARRAY
1181: PPUSH
1182: LD_INT 10
1184: PPUSH
1185: CALL_OW 273
1189: PUSH
1190: EMPTY
1191: LIST
1192: LIST
1193: PUSH
1194: EMPTY
1195: LIST
1196: ADD
1197: ST_TO_ADDR
1198: GO 1125
1200: POP
1201: POP
// breastworks_def := [ [ [ 69 , 94 , 3 ] , [ 82 , 107 , 4 ] ] , [ [ 254 , 108 , 2 ] , [ 242 , 110 , 2 ] ] ] ;
1202: LD_ADDR_EXP 30
1206: PUSH
1207: LD_INT 69
1209: PUSH
1210: LD_INT 94
1212: PUSH
1213: LD_INT 3
1215: PUSH
1216: EMPTY
1217: LIST
1218: LIST
1219: LIST
1220: PUSH
1221: LD_INT 82
1223: PUSH
1224: LD_INT 107
1226: PUSH
1227: LD_INT 4
1229: PUSH
1230: EMPTY
1231: LIST
1232: LIST
1233: LIST
1234: PUSH
1235: EMPTY
1236: LIST
1237: LIST
1238: PUSH
1239: LD_INT 254
1241: PUSH
1242: LD_INT 108
1244: PUSH
1245: LD_INT 2
1247: PUSH
1248: EMPTY
1249: LIST
1250: LIST
1251: LIST
1252: PUSH
1253: LD_INT 242
1255: PUSH
1256: LD_INT 110
1258: PUSH
1259: LD_INT 2
1261: PUSH
1262: EMPTY
1263: LIST
1264: LIST
1265: LIST
1266: PUSH
1267: EMPTY
1268: LIST
1269: LIST
1270: PUSH
1271: EMPTY
1272: LIST
1273: LIST
1274: ST_TO_ADDR
// for i = 1 to 2 do
1275: LD_ADDR_VAR 0 2
1279: PUSH
1280: DOUBLE
1281: LD_INT 1
1283: DEC
1284: ST_TO_ADDR
1285: LD_INT 2
1287: PUSH
1288: FOR_TO
1289: IFFALSE 1330
// CreateDepositXY ( normal_oil_deposits_locations [ i ] [ 1 ] , normal_oil_deposits_locations [ i ] [ 2 ] , mat_oil ) ;
1291: LD_EXP 32
1295: PUSH
1296: LD_VAR 0 2
1300: ARRAY
1301: PUSH
1302: LD_INT 1
1304: ARRAY
1305: PPUSH
1306: LD_EXP 32
1310: PUSH
1311: LD_VAR 0 2
1315: ARRAY
1316: PUSH
1317: LD_INT 2
1319: ARRAY
1320: PPUSH
1321: LD_INT 2
1323: PPUSH
1324: CALL_OW 62
1328: GO 1288
1330: POP
1331: POP
// end ;
1332: LD_VAR 0 1
1336: RET
// function set_shared_visions_and_alliances ; var i , j ; begin
1337: LD_INT 0
1339: PPUSH
1340: PPUSH
1341: PPUSH
// if not Team_Game then
1342: LD_EXP 27
1346: NOT
1347: IFFALSE 1445
// begin for i = 1 to 8 do
1349: LD_ADDR_VAR 0 2
1353: PUSH
1354: DOUBLE
1355: LD_INT 1
1357: DEC
1358: ST_TO_ADDR
1359: LD_INT 8
1361: PUSH
1362: FOR_TO
1363: IFFALSE 1441
// for j = 1 to 8 do
1365: LD_ADDR_VAR 0 3
1369: PUSH
1370: DOUBLE
1371: LD_INT 1
1373: DEC
1374: ST_TO_ADDR
1375: LD_INT 8
1377: PUSH
1378: FOR_TO
1379: IFFALSE 1437
// if i <> j then
1381: LD_VAR 0 2
1385: PUSH
1386: LD_VAR 0 3
1390: NONEQUAL
1391: IFFALSE 1415
// SetAttitude ( i , j , att_neutral , true ) else
1393: LD_VAR 0 2
1397: PPUSH
1398: LD_VAR 0 3
1402: PPUSH
1403: LD_INT 0
1405: PPUSH
1406: LD_INT 1
1408: PPUSH
1409: CALL_OW 80
1413: GO 1435
// SetAttitude ( i , j , att_friend , true ) ;
1415: LD_VAR 0 2
1419: PPUSH
1420: LD_VAR 0 3
1424: PPUSH
1425: LD_INT 1
1427: PPUSH
1428: LD_INT 1
1430: PPUSH
1431: CALL_OW 80
1435: GO 1378
1437: POP
1438: POP
1439: GO 1362
1441: POP
1442: POP
// end else
1443: GO 1620
// begin if def_shared_vision then
1445: LD_EXP 6
1449: IFFALSE 1514
// begin for i in Teams do
1451: LD_ADDR_VAR 0 2
1455: PUSH
1456: LD_EXP 24
1460: PUSH
1461: FOR_IN
1462: IFFALSE 1512
// for j = 2 to i do
1464: LD_ADDR_VAR 0 3
1468: PUSH
1469: DOUBLE
1470: LD_INT 2
1472: DEC
1473: ST_TO_ADDR
1474: LD_VAR 0 2
1478: PUSH
1479: FOR_TO
1480: IFFALSE 1508
// ChangeSideFog ( i [ j ] , i [ 1 ] ) ;
1482: LD_VAR 0 2
1486: PUSH
1487: LD_VAR 0 3
1491: ARRAY
1492: PPUSH
1493: LD_VAR 0 2
1497: PUSH
1498: LD_INT 1
1500: ARRAY
1501: PPUSH
1502: CALL_OW 343
1506: GO 1479
1508: POP
1509: POP
1510: GO 1461
1512: POP
1513: POP
// end ; for i = 1 to 8 do
1514: LD_ADDR_VAR 0 2
1518: PUSH
1519: DOUBLE
1520: LD_INT 1
1522: DEC
1523: ST_TO_ADDR
1524: LD_INT 8
1526: PUSH
1527: FOR_TO
1528: IFFALSE 1618
// for j = 1 to 8 do
1530: LD_ADDR_VAR 0 3
1534: PUSH
1535: DOUBLE
1536: LD_INT 1
1538: DEC
1539: ST_TO_ADDR
1540: LD_INT 8
1542: PUSH
1543: FOR_TO
1544: IFFALSE 1614
// if Side_Teams [ i ] = Side_Teams [ j ] then
1546: LD_EXP 23
1550: PUSH
1551: LD_VAR 0 2
1555: ARRAY
1556: PUSH
1557: LD_EXP 23
1561: PUSH
1562: LD_VAR 0 3
1566: ARRAY
1567: EQUAL
1568: IFFALSE 1592
// SetAttitude ( i , j , att_friend , true ) else
1570: LD_VAR 0 2
1574: PPUSH
1575: LD_VAR 0 3
1579: PPUSH
1580: LD_INT 1
1582: PPUSH
1583: LD_INT 1
1585: PPUSH
1586: CALL_OW 80
1590: GO 1612
// SetAttitude ( i , j , att_enemy , true ) ;
1592: LD_VAR 0 2
1596: PPUSH
1597: LD_VAR 0 3
1601: PPUSH
1602: LD_INT 2
1604: PPUSH
1605: LD_INT 1
1607: PPUSH
1608: CALL_OW 80
1612: GO 1543
1614: POP
1615: POP
1616: GO 1527
1618: POP
1619: POP
// end ; end ;
1620: LD_VAR 0 1
1624: RET
// function prepare_people ( count , cl , x , y , r ) ; var i , j , un ; begin
1625: LD_INT 0
1627: PPUSH
1628: PPUSH
1629: PPUSH
1630: PPUSH
// result := [ ] ;
1631: LD_ADDR_VAR 0 6
1635: PUSH
1636: EMPTY
1637: ST_TO_ADDR
// for i := 1 to count do
1638: LD_ADDR_VAR 0 7
1642: PUSH
1643: DOUBLE
1644: LD_INT 1
1646: DEC
1647: ST_TO_ADDR
1648: LD_VAR 0 1
1652: PUSH
1653: FOR_TO
1654: IFFALSE 2050
// begin uc_direction := Rand ( 0 , 5 ) ;
1656: LD_ADDR_OWVAR 24
1660: PUSH
1661: LD_INT 0
1663: PPUSH
1664: LD_INT 5
1666: PPUSH
1667: CALL_OW 12
1671: ST_TO_ADDR
// if commander then
1672: LD_LOC 1
1676: IFFALSE 1785
// begin hc_name := mp_sides_players_names [ uc_side ] ;
1678: LD_ADDR_OWVAR 26
1682: PUSH
1683: LD_OWVAR 19
1687: PUSH
1688: LD_OWVAR 20
1692: ARRAY
1693: ST_TO_ADDR
// PrepareHuman ( Rand ( 1 , 2 ) , cl , skill_level + 2 ) ;
1694: LD_INT 1
1696: PPUSH
1697: LD_INT 2
1699: PPUSH
1700: CALL_OW 12
1704: PPUSH
1705: LD_VAR 0 2
1709: PPUSH
1710: LD_EXP 12
1714: PUSH
1715: LD_INT 2
1717: PLUS
1718: PPUSH
1719: CALL_OW 380
// hc_importance := 105 ;
1723: LD_ADDR_OWVAR 32
1727: PUSH
1728: LD_INT 105
1730: ST_TO_ADDR
// commander := false ;
1731: LD_ADDR_LOC 1
1735: PUSH
1736: LD_INT 0
1738: ST_TO_ADDR
// if Multiplayer then
1739: LD_OWVAR 4
1743: IFFALSE 1783
// begin hc_gallery := MULTIAVATARS ;
1745: LD_ADDR_OWVAR 33
1749: PUSH
1750: LD_STRING MULTIAVATARS
1752: ST_TO_ADDR
// hc_face_number := Multiplayer_GetPlayerSideNum ( uc_side ) ;
1753: LD_ADDR_OWVAR 34
1757: PUSH
1758: LD_OWVAR 20
1762: PPUSH
1763: CALL_OW 525
1767: ST_TO_ADDR
// hc_sex := Multiplayer_GetPlayerSex ( uc_side ) ;
1768: LD_ADDR_OWVAR 27
1772: PUSH
1773: LD_OWVAR 20
1777: PPUSH
1778: CALL_OW 526
1782: ST_TO_ADDR
// end ; end else
1783: GO 1848
// begin hc_name :=  ;
1785: LD_ADDR_OWVAR 26
1789: PUSH
1790: LD_STRING 
1792: ST_TO_ADDR
// PrepareHuman ( rand ( 1 , 2 ) , cl , skill_level ) ;
1793: LD_INT 1
1795: PPUSH
1796: LD_INT 2
1798: PPUSH
1799: CALL_OW 12
1803: PPUSH
1804: LD_VAR 0 2
1808: PPUSH
1809: LD_EXP 12
1813: PPUSH
1814: CALL_OW 380
// hc_importance := 0 ;
1818: LD_ADDR_OWVAR 32
1822: PUSH
1823: LD_INT 0
1825: ST_TO_ADDR
// if Multiplayer then
1826: LD_OWVAR 4
1830: IFFALSE 1848
// begin hc_gallery :=  ;
1832: LD_ADDR_OWVAR 33
1836: PUSH
1837: LD_STRING 
1839: ST_TO_ADDR
// hc_face_number := 0 ;
1840: LD_ADDR_OWVAR 34
1844: PUSH
1845: LD_INT 0
1847: ST_TO_ADDR
// end ; end ; un := CreateHuman ;
1848: LD_ADDR_VAR 0 9
1852: PUSH
1853: CALL_OW 44
1857: ST_TO_ADDR
// if global_defined then
1858: LD_LOC 3
1862: IFFALSE 2002
// begin if ( cl = class_soldier ) then
1864: LD_VAR 0 2
1868: PUSH
1869: LD_INT 1
1871: EQUAL
1872: IFFALSE 1892
// j := i + soldiers_created else
1874: LD_ADDR_VAR 0 8
1878: PUSH
1879: LD_VAR 0 7
1883: PUSH
1884: LD_LOC 4
1888: PLUS
1889: ST_TO_ADDR
1890: GO 1902
// j := i ;
1892: LD_ADDR_VAR 0 8
1896: PUSH
1897: LD_VAR 0 7
1901: ST_TO_ADDR
// CopySkills ( global_units [ cl ] [ j ] , un ) ;
1902: LD_LOC 2
1906: PUSH
1907: LD_VAR 0 2
1911: ARRAY
1912: PUSH
1913: LD_VAR 0 8
1917: ARRAY
1918: PPUSH
1919: LD_VAR 0 9
1923: PPUSH
1924: CALL_OW 510
// SetAttr ( un , attr_speed , GetAttr ( global_units [ cl ] [ j ] , attr_speed ) ) ;
1928: LD_VAR 0 9
1932: PPUSH
1933: LD_INT 2
1935: PPUSH
1936: LD_LOC 2
1940: PUSH
1941: LD_VAR 0 2
1945: ARRAY
1946: PUSH
1947: LD_VAR 0 8
1951: ARRAY
1952: PPUSH
1953: LD_INT 2
1955: PPUSH
1956: CALL_OW 260
1960: PPUSH
1961: CALL_OW 239
// SetAttr ( un , attr_stamina , GetAttr ( global_units [ cl ] [ j ] , attr_stamina ) ) ;
1965: LD_VAR 0 9
1969: PPUSH
1970: LD_INT 1
1972: PPUSH
1973: LD_LOC 2
1977: PUSH
1978: LD_VAR 0 2
1982: ARRAY
1983: PUSH
1984: LD_VAR 0 8
1988: ARRAY
1989: PPUSH
1990: LD_INT 1
1992: PPUSH
1993: CALL_OW 260
1997: PPUSH
1998: CALL_OW 239
// end ; PlaceUnitXYR ( un , x , y , r , false ) ;
2002: LD_VAR 0 9
2006: PPUSH
2007: LD_VAR 0 3
2011: PPUSH
2012: LD_VAR 0 4
2016: PPUSH
2017: LD_VAR 0 5
2021: PPUSH
2022: LD_INT 0
2024: PPUSH
2025: CALL_OW 50
// result := result ^ [ un ] ;
2029: LD_ADDR_VAR 0 6
2033: PUSH
2034: LD_VAR 0 6
2038: PUSH
2039: LD_VAR 0 9
2043: PUSH
2044: EMPTY
2045: LIST
2046: ADD
2047: ST_TO_ADDR
// end ;
2048: GO 1653
2050: POP
2051: POP
// if not global_defined then
2052: LD_LOC 3
2056: NOT
2057: IFFALSE 2135
// if ( global_units >= cl ) then
2059: LD_LOC 2
2063: PUSH
2064: LD_VAR 0 2
2068: GREATEREQUAL
2069: IFFALSE 2110
// global_units := Replace ( global_units , cl , global_units [ cl ] ^ result ) else
2071: LD_ADDR_LOC 2
2075: PUSH
2076: LD_LOC 2
2080: PPUSH
2081: LD_VAR 0 2
2085: PPUSH
2086: LD_LOC 2
2090: PUSH
2091: LD_VAR 0 2
2095: ARRAY
2096: PUSH
2097: LD_VAR 0 6
2101: ADD
2102: PPUSH
2103: CALL_OW 1
2107: ST_TO_ADDR
2108: GO 2135
// global_units := Replace ( global_units , cl , result ) ;
2110: LD_ADDR_LOC 2
2114: PUSH
2115: LD_LOC 2
2119: PPUSH
2120: LD_VAR 0 2
2124: PPUSH
2125: LD_VAR 0 6
2129: PPUSH
2130: CALL_OW 1
2134: ST_TO_ADDR
// end ;
2135: LD_VAR 0 6
2139: RET
// function prepare_side ( side ) ; var pos , x , y , dir , i , r , sol , br , dep ; begin
2140: LD_INT 0
2142: PPUSH
2143: PPUSH
2144: PPUSH
2145: PPUSH
2146: PPUSH
2147: PPUSH
2148: PPUSH
2149: PPUSH
2150: PPUSH
2151: PPUSH
// pos := Side_Positions [ side ] ;
2152: LD_ADDR_VAR 0 3
2156: PUSH
2157: LD_EXP 25
2161: PUSH
2162: LD_VAR 0 1
2166: ARRAY
2167: ST_TO_ADDR
// uc_nation := Side_Nations [ side ] ;
2168: LD_ADDR_OWVAR 21
2172: PUSH
2173: LD_EXP 26
2177: PUSH
2178: LD_VAR 0 1
2182: ARRAY
2183: ST_TO_ADDR
// uc_side := side ;
2184: LD_ADDR_OWVAR 20
2188: PUSH
2189: LD_VAR 0 1
2193: ST_TO_ADDR
// x := depot_def [ pos ] [ 1 ] ;
2194: LD_ADDR_VAR 0 4
2198: PUSH
2199: LD_EXP 29
2203: PUSH
2204: LD_VAR 0 3
2208: ARRAY
2209: PUSH
2210: LD_INT 1
2212: ARRAY
2213: ST_TO_ADDR
// y := depot_def [ pos ] [ 2 ] ;
2214: LD_ADDR_VAR 0 5
2218: PUSH
2219: LD_EXP 29
2223: PUSH
2224: LD_VAR 0 3
2228: ARRAY
2229: PUSH
2230: LD_INT 2
2232: ARRAY
2233: ST_TO_ADDR
// dir := depot_def [ pos ] [ 3 ] ;
2234: LD_ADDR_VAR 0 6
2238: PUSH
2239: LD_EXP 29
2243: PUSH
2244: LD_VAR 0 3
2248: ARRAY
2249: PUSH
2250: LD_INT 3
2252: ARRAY
2253: ST_TO_ADDR
// if is_depot then
2254: LD_EXP 9
2258: IFFALSE 2391
// begin bc_type = b_depot ;
2260: LD_ADDR_OWVAR 42
2264: PUSH
2265: LD_INT 0
2267: ST_TO_ADDR
// dep := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2268: LD_ADDR_VAR 0 11
2272: PUSH
2273: LD_VAR 0 4
2277: PPUSH
2278: LD_VAR 0 5
2282: PPUSH
2283: LD_VAR 0 6
2287: PPUSH
2288: CALL_OW 47
2292: ST_TO_ADDR
// SetBName ( dep , @ & side ) ;
2293: LD_VAR 0 11
2297: PPUSH
2298: LD_STRING @
2300: PUSH
2301: LD_VAR 0 1
2305: STR
2306: PPUSH
2307: CALL_OW 500
// SetResourceType ( GetBase ( dep ) , mat_cans , starting_resources [ mat_cans ] ) ;
2311: LD_VAR 0 11
2315: PPUSH
2316: CALL_OW 274
2320: PPUSH
2321: LD_INT 1
2323: PPUSH
2324: LD_EXP 14
2328: PUSH
2329: LD_INT 1
2331: ARRAY
2332: PPUSH
2333: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_oil , starting_resources [ mat_oil ] ) ;
2337: LD_VAR 0 11
2341: PPUSH
2342: CALL_OW 274
2346: PPUSH
2347: LD_INT 2
2349: PPUSH
2350: LD_EXP 14
2354: PUSH
2355: LD_INT 2
2357: ARRAY
2358: PPUSH
2359: CALL_OW 277
// SetResourceType ( GetBase ( dep ) , mat_siberit , starting_resources [ mat_siberit ] ) ;
2363: LD_VAR 0 11
2367: PPUSH
2368: CALL_OW 274
2372: PPUSH
2373: LD_INT 3
2375: PPUSH
2376: LD_EXP 14
2380: PUSH
2381: LD_INT 3
2383: ARRAY
2384: PPUSH
2385: CALL_OW 277
// end else
2389: GO 2535
// begin for i := 1 to 3 do
2391: LD_ADDR_VAR 0 7
2395: PUSH
2396: DOUBLE
2397: LD_INT 1
2399: DEC
2400: ST_TO_ADDR
2401: LD_INT 3
2403: PUSH
2404: FOR_TO
2405: IFFALSE 2533
// begin r := starting_resources [ i ] ;
2407: LD_ADDR_VAR 0 8
2411: PUSH
2412: LD_EXP 14
2416: PUSH
2417: LD_VAR 0 7
2421: ARRAY
2422: ST_TO_ADDR
// while r >= 10 do
2423: LD_VAR 0 8
2427: PUSH
2428: LD_INT 10
2430: GREATEREQUAL
2431: IFFALSE 2531
// if r > 50 then
2433: LD_VAR 0 8
2437: PUSH
2438: LD_INT 50
2440: GREATER
2441: IFFALSE 2487
// begin CreateResourcesXYR ( i , 5 , x , y , 4 , false ) ;
2443: LD_VAR 0 7
2447: PPUSH
2448: LD_INT 5
2450: PPUSH
2451: LD_VAR 0 4
2455: PPUSH
2456: LD_VAR 0 5
2460: PPUSH
2461: LD_INT 4
2463: PPUSH
2464: LD_INT 0
2466: PPUSH
2467: CALL_OW 60
// r := r - 50 ;
2471: LD_ADDR_VAR 0 8
2475: PUSH
2476: LD_VAR 0 8
2480: PUSH
2481: LD_INT 50
2483: MINUS
2484: ST_TO_ADDR
// end else
2485: GO 2529
// begin CreateResourcesXYR ( i , r div 10 , x , y , 4 , false ) ;
2487: LD_VAR 0 7
2491: PPUSH
2492: LD_VAR 0 8
2496: PUSH
2497: LD_INT 10
2499: DIV
2500: PPUSH
2501: LD_VAR 0 4
2505: PPUSH
2506: LD_VAR 0 5
2510: PPUSH
2511: LD_INT 4
2513: PPUSH
2514: LD_INT 0
2516: PPUSH
2517: CALL_OW 60
// r := 0 ;
2521: LD_ADDR_VAR 0 8
2525: PUSH
2526: LD_INT 0
2528: ST_TO_ADDR
// end ;
2529: GO 2423
// end ;
2531: GO 2404
2533: POP
2534: POP
// end ; for r in starting_crates do
2535: LD_ADDR_VAR 0 8
2539: PUSH
2540: LD_EXP 13
2544: PUSH
2545: FOR_IN
2546: IFFALSE 2578
// CreateResourcesXYR ( mat_cans , 5 , x , y , r , false ) ;
2548: LD_INT 1
2550: PPUSH
2551: LD_INT 5
2553: PPUSH
2554: LD_VAR 0 4
2558: PPUSH
2559: LD_VAR 0 5
2563: PPUSH
2564: LD_VAR 0 8
2568: PPUSH
2569: LD_INT 0
2571: PPUSH
2572: CALL_OW 60
2576: GO 2545
2578: POP
2579: POP
// commander := true ;
2580: LD_ADDR_LOC 1
2584: PUSH
2585: LD_INT 1
2587: ST_TO_ADDR
// soldiers_created := 0 ;
2588: LD_ADDR_LOC 4
2592: PUSH
2593: LD_INT 0
2595: ST_TO_ADDR
// for i := 1 to number_of_breastworks do
2596: LD_ADDR_VAR 0 7
2600: PUSH
2601: DOUBLE
2602: LD_INT 1
2604: DEC
2605: ST_TO_ADDR
2606: LD_EXP 10
2610: PUSH
2611: FOR_TO
2612: IFFALSE 2834
// begin x := breastworks_def [ pos ] [ i ] [ 1 ] ;
2614: LD_ADDR_VAR 0 4
2618: PUSH
2619: LD_EXP 30
2623: PUSH
2624: LD_VAR 0 3
2628: ARRAY
2629: PUSH
2630: LD_VAR 0 7
2634: ARRAY
2635: PUSH
2636: LD_INT 1
2638: ARRAY
2639: ST_TO_ADDR
// y := breastworks_def [ pos ] [ i ] [ 2 ] ;
2640: LD_ADDR_VAR 0 5
2644: PUSH
2645: LD_EXP 30
2649: PUSH
2650: LD_VAR 0 3
2654: ARRAY
2655: PUSH
2656: LD_VAR 0 7
2660: ARRAY
2661: PUSH
2662: LD_INT 2
2664: ARRAY
2665: ST_TO_ADDR
// dir := breastworks_def [ pos ] [ i ] [ 3 ] ;
2666: LD_ADDR_VAR 0 6
2670: PUSH
2671: LD_EXP 30
2675: PUSH
2676: LD_VAR 0 3
2680: ARRAY
2681: PUSH
2682: LD_VAR 0 7
2686: ARRAY
2687: PUSH
2688: LD_INT 3
2690: ARRAY
2691: ST_TO_ADDR
// bc_type := b_breastwork ;
2692: LD_ADDR_OWVAR 42
2696: PUSH
2697: LD_INT 31
2699: ST_TO_ADDR
// br := CreateAndPlaceBuildingXYD ( x , y , dir ) ;
2700: LD_ADDR_VAR 0 10
2704: PUSH
2705: LD_VAR 0 4
2709: PPUSH
2710: LD_VAR 0 5
2714: PPUSH
2715: LD_VAR 0 6
2719: PPUSH
2720: CALL_OW 47
2724: ST_TO_ADDR
// x := ShiftX ( x , dir , 2 ) ;
2725: LD_ADDR_VAR 0 4
2729: PUSH
2730: LD_VAR 0 4
2734: PPUSH
2735: LD_VAR 0 6
2739: PPUSH
2740: LD_INT 2
2742: PPUSH
2743: CALL_OW 272
2747: ST_TO_ADDR
// y := ShiftY ( y , dir , 2 ) ;
2748: LD_ADDR_VAR 0 5
2752: PUSH
2753: LD_VAR 0 5
2757: PPUSH
2758: LD_VAR 0 6
2762: PPUSH
2763: LD_INT 2
2765: PPUSH
2766: CALL_OW 273
2770: ST_TO_ADDR
// sol := prepare_people ( 1 , class_soldier , x , y , 0 ) [ 1 ] ;
2771: LD_ADDR_VAR 0 9
2775: PUSH
2776: LD_INT 1
2778: PPUSH
2779: LD_INT 1
2781: PPUSH
2782: LD_VAR 0 4
2786: PPUSH
2787: LD_VAR 0 5
2791: PPUSH
2792: LD_INT 0
2794: PPUSH
2795: CALL 1625 0 5
2799: PUSH
2800: LD_INT 1
2802: ARRAY
2803: ST_TO_ADDR
// soldiers_created := soldiers_created + 1 ;
2804: LD_ADDR_LOC 4
2808: PUSH
2809: LD_LOC 4
2813: PUSH
2814: LD_INT 1
2816: PLUS
2817: ST_TO_ADDR
// ComEnterUnit ( sol , br ) ;
2818: LD_VAR 0 9
2822: PPUSH
2823: LD_VAR 0 10
2827: PPUSH
2828: CALL_OW 120
// end ;
2832: GO 2611
2834: POP
2835: POP
// x := start_def [ pos ] [ 1 ] ;
2836: LD_ADDR_VAR 0 4
2840: PUSH
2841: LD_EXP 31
2845: PUSH
2846: LD_VAR 0 3
2850: ARRAY
2851: PUSH
2852: LD_INT 1
2854: ARRAY
2855: ST_TO_ADDR
// y := start_def [ pos ] [ 2 ] ;
2856: LD_ADDR_VAR 0 5
2860: PUSH
2861: LD_EXP 31
2865: PUSH
2866: LD_VAR 0 3
2870: ARRAY
2871: PUSH
2872: LD_INT 2
2874: ARRAY
2875: ST_TO_ADDR
// prepare_people ( nsol - number_of_breastworks , class_soldier , x , y , 5 ) ;
2876: LD_LOC 8
2880: PUSH
2881: LD_EXP 10
2885: MINUS
2886: PPUSH
2887: LD_INT 1
2889: PPUSH
2890: LD_VAR 0 4
2894: PPUSH
2895: LD_VAR 0 5
2899: PPUSH
2900: LD_INT 5
2902: PPUSH
2903: CALL 1625 0 5
// prepare_people ( neng , class_engineer , x , y , 5 ) ;
2907: LD_LOC 5
2911: PPUSH
2912: LD_INT 2
2914: PPUSH
2915: LD_VAR 0 4
2919: PPUSH
2920: LD_VAR 0 5
2924: PPUSH
2925: LD_INT 5
2927: PPUSH
2928: CALL 1625 0 5
// prepare_people ( nmech , class_mechanic , x , y , 5 ) ;
2932: LD_LOC 7
2936: PPUSH
2937: LD_INT 3
2939: PPUSH
2940: LD_VAR 0 4
2944: PPUSH
2945: LD_VAR 0 5
2949: PPUSH
2950: LD_INT 5
2952: PPUSH
2953: CALL 1625 0 5
// prepare_people ( nsci , class_scientistic , x , y , 5 ) ;
2957: LD_LOC 6
2961: PPUSH
2962: LD_INT 4
2964: PPUSH
2965: LD_VAR 0 4
2969: PPUSH
2970: LD_VAR 0 5
2974: PPUSH
2975: LD_INT 5
2977: PPUSH
2978: CALL 1625 0 5
// SetTech ( tech_artifact , side , state_disabled ) ;
2982: LD_INT 24
2984: PPUSH
2985: LD_VAR 0 1
2989: PPUSH
2990: LD_INT 0
2992: PPUSH
2993: CALL_OW 322
// SetTech ( tech_SibFiss , side , state_disabled ) ;
2997: LD_INT 25
2999: PPUSH
3000: LD_VAR 0 1
3004: PPUSH
3005: LD_INT 0
3007: PPUSH
3008: CALL_OW 322
// global_defined := true ;
3012: LD_ADDR_LOC 3
3016: PUSH
3017: LD_INT 1
3019: ST_TO_ADDR
// end ;
3020: LD_VAR 0 2
3024: RET
// function prepare_sides ; var i ; begin
3025: LD_INT 0
3027: PPUSH
3028: PPUSH
// global_units := [ ] ;
3029: LD_ADDR_LOC 2
3033: PUSH
3034: EMPTY
3035: ST_TO_ADDR
// global_defined := false ;
3036: LD_ADDR_LOC 3
3040: PUSH
3041: LD_INT 0
3043: ST_TO_ADDR
// CountClassMembers ;
3044: CALL 3094 0 0
// for i := 1 to 8 do
3048: LD_ADDR_VAR 0 2
3052: PUSH
3053: DOUBLE
3054: LD_INT 1
3056: DEC
3057: ST_TO_ADDR
3058: LD_INT 8
3060: PUSH
3061: FOR_TO
3062: IFFALSE 3087
// if Side_Positions [ i ] then
3064: LD_EXP 25
3068: PUSH
3069: LD_VAR 0 2
3073: ARRAY
3074: IFFALSE 3085
// prepare_side ( i ) ;
3076: LD_VAR 0 2
3080: PPUSH
3081: CALL 2140 0 1
3085: GO 3061
3087: POP
3088: POP
// end ;
3089: LD_VAR 0 1
3093: RET
// function CountClassMembers ; var Mode ; begin
3094: LD_INT 0
3096: PPUSH
3097: PPUSH
// neng := number_of_people ;
3098: LD_ADDR_LOC 5
3102: PUSH
3103: LD_EXP 11
3107: ST_TO_ADDR
// nsol := neng div [ 4 , 3 ] [ Mode ] ;
3108: LD_ADDR_LOC 8
3112: PUSH
3113: LD_LOC 5
3117: PUSH
3118: LD_INT 4
3120: PUSH
3121: LD_INT 3
3123: PUSH
3124: EMPTY
3125: LIST
3126: LIST
3127: PUSH
3128: LD_VAR 0 2
3132: ARRAY
3133: DIV
3134: ST_TO_ADDR
// if ( nsol < number_of_breastworks ) then
3135: LD_LOC 8
3139: PUSH
3140: LD_EXP 10
3144: LESS
3145: IFFALSE 3157
// nsol := number_of_breastworks ;
3147: LD_ADDR_LOC 8
3151: PUSH
3152: LD_EXP 10
3156: ST_TO_ADDR
// neng := neng - nsol ;
3157: LD_ADDR_LOC 5
3161: PUSH
3162: LD_LOC 5
3166: PUSH
3167: LD_LOC 8
3171: MINUS
3172: ST_TO_ADDR
// nsci := neng div [ 3 , 2 ] [ Mode ] ;
3173: LD_ADDR_LOC 6
3177: PUSH
3178: LD_LOC 5
3182: PUSH
3183: LD_INT 3
3185: PUSH
3186: LD_INT 2
3188: PUSH
3189: EMPTY
3190: LIST
3191: LIST
3192: PUSH
3193: LD_VAR 0 2
3197: ARRAY
3198: DIV
3199: ST_TO_ADDR
// if ( nsci < 1 ) then
3200: LD_LOC 6
3204: PUSH
3205: LD_INT 1
3207: LESS
3208: IFFALSE 3218
// nsci := 1 ;
3210: LD_ADDR_LOC 6
3214: PUSH
3215: LD_INT 1
3217: ST_TO_ADDR
// neng := neng - nsci ;
3218: LD_ADDR_LOC 5
3222: PUSH
3223: LD_LOC 5
3227: PUSH
3228: LD_LOC 6
3232: MINUS
3233: ST_TO_ADDR
// nmech := [ neng div 2 , 0 ] [ Mode ] ;
3234: LD_ADDR_LOC 7
3238: PUSH
3239: LD_LOC 5
3243: PUSH
3244: LD_INT 2
3246: DIV
3247: PUSH
3248: LD_INT 0
3250: PUSH
3251: EMPTY
3252: LIST
3253: LIST
3254: PUSH
3255: LD_VAR 0 2
3259: ARRAY
3260: ST_TO_ADDR
// neng := neng - nmech ;
3261: LD_ADDR_LOC 5
3265: PUSH
3266: LD_LOC 5
3270: PUSH
3271: LD_LOC 7
3275: MINUS
3276: ST_TO_ADDR
// if ( neng < 1 ) then
3277: LD_LOC 5
3281: PUSH
3282: LD_INT 1
3284: LESS
3285: IFFALSE 3295
// neng := 1 ;
3287: LD_ADDR_LOC 5
3291: PUSH
3292: LD_INT 1
3294: ST_TO_ADDR
// end ;
3295: LD_VAR 0 1
3299: RET
// starting var i , d ; begin ResetFog ;
3300: CALL_OW 335
// SetSide ( FilterAllUnits ( [ f_side , 3 ] ) , 0 ) ;
3304: LD_INT 22
3306: PUSH
3307: LD_INT 3
3309: PUSH
3310: EMPTY
3311: LIST
3312: LIST
3313: PPUSH
3314: CALL_OW 69
3318: PPUSH
3319: LD_INT 0
3321: PPUSH
3322: CALL_OW 235
// enable_human_prediction := true ;
3326: LD_ADDR_OWVAR 51
3330: PUSH
3331: LD_INT 1
3333: ST_TO_ADDR
// mp_selectmsg := true ;
3334: LD_ADDR_OWVAR 13
3338: PUSH
3339: LD_INT 1
3341: ST_TO_ADDR
// rudestroyedBuildings = [ ] ;
3342: LD_ADDR_EXP 39
3346: PUSH
3347: EMPTY
3348: ST_TO_ADDR
// randomedColors = [ ] ;
3349: LD_ADDR_EXP 41
3353: PUSH
3354: EMPTY
3355: ST_TO_ADDR
// read_multiplayer_and_game_parameters ;
3356: CALL 0 0 0
// init_map ;
3360: CALL 1044 0 0
// init_respawning ;
3364: CALL 3617 0 0
// set_shared_visions_and_alliances ;
3368: CALL 1337 0 0
// prepare_sides ;
3372: CALL 3025 0 0
// MultiplayerColorCheck ;
3376: CALL 5027 0 0
// ChangeAISide ;
3380: CALL 4199 0 0
// if FilterAllUnits ( [ f_side , sideP1 ] ) > 0 then
3384: LD_INT 22
3386: PUSH
3387: LD_EXP 42
3391: PUSH
3392: EMPTY
3393: LIST
3394: LIST
3395: PPUSH
3396: CALL_OW 69
3400: PUSH
3401: LD_INT 0
3403: GREATER
3404: IFFALSE 3451
// SpawnGenerals ( sideP1 , 1 , us , 5 , Macmillan , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
3406: LD_EXP 42
3410: PPUSH
3411: LD_INT 1
3413: PPUSH
3414: LD_STRING us
3416: PPUSH
3417: LD_INT 5
3419: PPUSH
3420: LD_STRING Macmillan
3422: PPUSH
3423: LD_INT 1
3425: PPUSH
3426: LD_INT 1
3428: PPUSH
3429: LD_INT 10
3431: PUSH
3432: LD_INT 8
3434: PUSH
3435: LD_INT 6
3437: PUSH
3438: LD_INT 4
3440: PUSH
3441: EMPTY
3442: LIST
3443: LIST
3444: LIST
3445: LIST
3446: PPUSH
3447: CALL 4003 0 8
// if FilterAllUnits ( [ f_side , sideP2 ] ) > 0 then
3451: LD_INT 22
3453: PUSH
3454: LD_EXP 43
3458: PUSH
3459: EMPTY
3460: LIST
3461: LIST
3462: PPUSH
3463: CALL_OW 69
3467: PUSH
3468: LD_INT 0
3470: GREATER
3471: IFFALSE 3518
// SpawnGenerals ( sideP2 , 1 , us , 17 , Cornell , sex_male , 1 , [ 10 , 8 , 6 , 4 ] ) ;
3473: LD_EXP 43
3477: PPUSH
3478: LD_INT 1
3480: PPUSH
3481: LD_STRING us
3483: PPUSH
3484: LD_INT 17
3486: PPUSH
3487: LD_STRING Cornell
3489: PPUSH
3490: LD_INT 1
3492: PPUSH
3493: LD_INT 1
3495: PPUSH
3496: LD_INT 10
3498: PUSH
3499: LD_INT 8
3501: PUSH
3502: LD_INT 6
3504: PUSH
3505: LD_INT 4
3507: PUSH
3508: EMPTY
3509: LIST
3510: LIST
3511: LIST
3512: LIST
3513: PPUSH
3514: CALL 4003 0 8
// PrepareRussianBase ;
3518: CALL 4300 0 0
// PrepareDifficulty ;
3522: CALL 5184 0 0
// music_nat := Side_Nations [ your_side ] ;
3526: LD_ADDR_OWVAR 71
3530: PUSH
3531: LD_EXP 26
3535: PUSH
3536: LD_OWVAR 2
3540: ARRAY
3541: ST_TO_ADDR
// if IAmSpec then
3542: CALL_OW 531
3546: IFFALSE 3570
// begin FogOff ( true ) ;
3548: LD_INT 1
3550: PPUSH
3551: CALL_OW 344
// CenterNowOnXY ( 104 , 69 ) ;
3555: LD_INT 104
3557: PPUSH
3558: LD_INT 69
3560: PPUSH
3561: CALL_OW 86
// enable ( 400 ) ;
3565: LD_INT 400
3567: ENABLE_MARKED
// end else
3568: GO 3616
// begin CenterNowOnXY ( start_def [ Side_Positions [ your_side ] ] [ 1 ] , start_def [ Side_Positions [ your_side ] ] [ 2 ] ) ;
3570: LD_EXP 31
3574: PUSH
3575: LD_EXP 25
3579: PUSH
3580: LD_OWVAR 2
3584: ARRAY
3585: ARRAY
3586: PUSH
3587: LD_INT 1
3589: ARRAY
3590: PPUSH
3591: LD_EXP 31
3595: PUSH
3596: LD_EXP 25
3600: PUSH
3601: LD_OWVAR 2
3605: ARRAY
3606: ARRAY
3607: PUSH
3608: LD_INT 2
3610: ARRAY
3611: PPUSH
3612: CALL_OW 86
// end ; end ; end_of_file
3616: END
// var respawn , inqueue ; export function init_respawning ; begin
3617: LD_INT 0
3619: PPUSH
// respawn := Rand ( 1 , 8 ) ;
3620: LD_ADDR_LOC 9
3624: PUSH
3625: LD_INT 1
3627: PPUSH
3628: LD_INT 8
3630: PPUSH
3631: CALL_OW 12
3635: ST_TO_ADDR
// inqueue := [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ;
3636: LD_ADDR_LOC 10
3640: PUSH
3641: LD_INT 0
3643: PUSH
3644: LD_INT 0
3646: PUSH
3647: LD_INT 0
3649: PUSH
3650: LD_INT 0
3652: PUSH
3653: LD_INT 0
3655: PUSH
3656: LD_INT 0
3658: PUSH
3659: LD_INT 0
3661: PUSH
3662: LD_INT 0
3664: PUSH
3665: EMPTY
3666: LIST
3667: LIST
3668: LIST
3669: LIST
3670: LIST
3671: LIST
3672: LIST
3673: LIST
3674: ST_TO_ADDR
// end ;
3675: LD_VAR 0 1
3679: RET
// every 0 0$1 + 0 0$0.5 do var n , building_list , aktresp , b , skills , k ;
3680: GO 3682
3682: DISABLE
3683: LD_INT 0
3685: PPUSH
3686: PPUSH
3687: PPUSH
3688: PPUSH
3689: PPUSH
3690: PPUSH
// begin if respawning_time_max = 0 then
3691: LD_EXP 20
3695: PUSH
3696: LD_INT 0
3698: EQUAL
3699: IFFALSE 3703
// exit ;
3701: GO 3876
// if respawn = 8 then
3703: LD_LOC 9
3707: PUSH
3708: LD_INT 8
3710: EQUAL
3711: IFFALSE 3723
// respawn := 1 else
3713: LD_ADDR_LOC 9
3717: PUSH
3718: LD_INT 1
3720: ST_TO_ADDR
3721: GO 3737
// respawn := respawn + 1 ;
3723: LD_ADDR_LOC 9
3727: PUSH
3728: LD_LOC 9
3732: PUSH
3733: LD_INT 1
3735: PLUS
3736: ST_TO_ADDR
// if Side_Positions [ respawn ] then
3737: LD_EXP 25
3741: PUSH
3742: LD_LOC 9
3746: ARRAY
3747: IFFALSE 3875
// begin n := FilterAllUnits ( [ [ f_type , unit_human ] , [ f_side , respawn ] , f_not , [ f_nation , nation_nature ] ] ) ;
3749: LD_ADDR_VAR 0 1
3753: PUSH
3754: LD_INT 21
3756: PUSH
3757: LD_INT 1
3759: PUSH
3760: EMPTY
3761: LIST
3762: LIST
3763: PUSH
3764: LD_INT 22
3766: PUSH
3767: LD_LOC 9
3771: PUSH
3772: EMPTY
3773: LIST
3774: LIST
3775: PUSH
3776: LD_INT 3
3778: PUSH
3779: LD_INT 23
3781: PUSH
3782: LD_INT 0
3784: PUSH
3785: EMPTY
3786: LIST
3787: LIST
3788: PUSH
3789: EMPTY
3790: LIST
3791: LIST
3792: LIST
3793: LIST
3794: PPUSH
3795: CALL_OW 69
3799: ST_TO_ADDR
// if ( n + inqueue [ respawn ] ) < number_of_people then
3800: LD_VAR 0 1
3804: PUSH
3805: LD_LOC 10
3809: PUSH
3810: LD_LOC 9
3814: ARRAY
3815: PLUS
3816: PUSH
3817: LD_EXP 11
3821: LESS
3822: IFFALSE 3872
// begin aktresp := respawn ;
3824: LD_ADDR_VAR 0 3
3828: PUSH
3829: LD_LOC 9
3833: ST_TO_ADDR
// inqueue := Replace ( inqueue , aktresp , inqueue [ aktresp ] + 1 ) ;
3834: LD_ADDR_LOC 10
3838: PUSH
3839: LD_LOC 10
3843: PPUSH
3844: LD_VAR 0 3
3848: PPUSH
3849: LD_LOC 10
3853: PUSH
3854: LD_VAR 0 3
3858: ARRAY
3859: PUSH
3860: LD_INT 1
3862: PLUS
3863: PPUSH
3864: CALL_OW 1
3868: ST_TO_ADDR
// enable ;
3869: ENABLE
// end else
3870: GO 3873
// enable ;
3872: ENABLE
// end else
3873: GO 3876
// enable ;
3875: ENABLE
// end ;
3876: PPOPN 6
3878: END
// export function OnHumanRespawned ( un ) ; begin
3879: LD_INT 0
3881: PPUSH
// wait ( 0 0$30 ) ;
3882: LD_INT 1050
3884: PPUSH
3885: CALL_OW 67
// inqueue := Replace ( inqueue , GetSide ( un ) , inqueue [ GetSide ( un ) ] - 1 ) ;
3889: LD_ADDR_LOC 10
3893: PUSH
3894: LD_LOC 10
3898: PPUSH
3899: LD_VAR 0 1
3903: PPUSH
3904: CALL_OW 255
3908: PPUSH
3909: LD_LOC 10
3913: PUSH
3914: LD_VAR 0 1
3918: PPUSH
3919: CALL_OW 255
3923: ARRAY
3924: PUSH
3925: LD_INT 1
3927: MINUS
3928: PPUSH
3929: CALL_OW 1
3933: ST_TO_ADDR
// end ;
3934: LD_VAR 0 2
3938: RET
// on HumanDestroyed ( identifier , side , nation , x , y , direction , sex , cl ) do var attr , skills ;
3939: LD_INT 0
3941: PPUSH
3942: PPUSH
// begin if nation = nation_nature or side = 0 then
3943: LD_VAR 0 3
3947: PUSH
3948: LD_INT 0
3950: EQUAL
3951: PUSH
3952: LD_VAR 0 2
3956: PUSH
3957: LD_INT 0
3959: EQUAL
3960: OR
3961: IFFALSE 3965
// exit ;
3963: GO 4000
// inqueue := Replace ( inqueue , side , inqueue [ side ] + 1 ) ;
3965: LD_ADDR_LOC 10
3969: PUSH
3970: LD_LOC 10
3974: PPUSH
3975: LD_VAR 0 2
3979: PPUSH
3980: LD_LOC 10
3984: PUSH
3985: LD_VAR 0 2
3989: ARRAY
3990: PUSH
3991: LD_INT 1
3993: PLUS
3994: PPUSH
3995: CALL_OW 1
3999: ST_TO_ADDR
// end ; end_of_file
4000: PPOPN 10
4002: END
// export function SpawnGenerals ( side , nation , gallery , numberGal , name , sex , class , skillTab ) ; var x , y , un ; begin
4003: LD_INT 0
4005: PPUSH
4006: PPUSH
4007: PPUSH
4008: PPUSH
// uc_side = side ;
4009: LD_ADDR_OWVAR 20
4013: PUSH
4014: LD_VAR 0 1
4018: ST_TO_ADDR
// uc_nation = nation ;
4019: LD_ADDR_OWVAR 21
4023: PUSH
4024: LD_VAR 0 2
4028: ST_TO_ADDR
// hc_gallery = gallery ;
4029: LD_ADDR_OWVAR 33
4033: PUSH
4034: LD_VAR 0 3
4038: ST_TO_ADDR
// hc_face_number = numberGal ;
4039: LD_ADDR_OWVAR 34
4043: PUSH
4044: LD_VAR 0 4
4048: ST_TO_ADDR
// hc_name = name ;
4049: LD_ADDR_OWVAR 26
4053: PUSH
4054: LD_VAR 0 5
4058: ST_TO_ADDR
// hc_sex = sex ;
4059: LD_ADDR_OWVAR 27
4063: PUSH
4064: LD_VAR 0 6
4068: ST_TO_ADDR
// hc_class = class ;
4069: LD_ADDR_OWVAR 28
4073: PUSH
4074: LD_VAR 0 7
4078: ST_TO_ADDR
// hc_skills = skillTab ;
4079: LD_ADDR_OWVAR 31
4083: PUSH
4084: LD_VAR 0 8
4088: ST_TO_ADDR
// hc_importance = 100 ;
4089: LD_ADDR_OWVAR 32
4093: PUSH
4094: LD_INT 100
4096: ST_TO_ADDR
// un = CreateHuman ;
4097: LD_ADDR_VAR 0 12
4101: PUSH
4102: CALL_OW 44
4106: ST_TO_ADDR
// x = GetX ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
4107: LD_ADDR_VAR 0 10
4111: PUSH
4112: LD_INT 22
4114: PUSH
4115: LD_VAR 0 1
4119: PUSH
4120: EMPTY
4121: LIST
4122: LIST
4123: PPUSH
4124: CALL_OW 69
4128: PUSH
4129: LD_INT 1
4131: ARRAY
4132: PPUSH
4133: CALL_OW 250
4137: ST_TO_ADDR
// y = GetY ( FilterAllUnits ( [ f_side , side ] ) [ 1 ] ) ;
4138: LD_ADDR_VAR 0 11
4142: PUSH
4143: LD_INT 22
4145: PUSH
4146: LD_VAR 0 1
4150: PUSH
4151: EMPTY
4152: LIST
4153: LIST
4154: PPUSH
4155: CALL_OW 69
4159: PUSH
4160: LD_INT 1
4162: ARRAY
4163: PPUSH
4164: CALL_OW 251
4168: ST_TO_ADDR
// PlaceUnitXYR ( un , x , y , 5 , false ) ;
4169: LD_VAR 0 12
4173: PPUSH
4174: LD_VAR 0 10
4178: PPUSH
4179: LD_VAR 0 11
4183: PPUSH
4184: LD_INT 5
4186: PPUSH
4187: LD_INT 0
4189: PPUSH
4190: CALL_OW 50
// end ;
4194: LD_VAR 0 9
4198: RET
// export function ChangeAISide ; begin
4199: LD_INT 0
4201: PPUSH
// SetSide ( FilterUnitsInArea ( RuBaseArea1 , [ f_side , 0 ] ) , randomedColors [ 1 ] ) ;
4202: LD_INT 3
4204: PPUSH
4205: LD_INT 22
4207: PUSH
4208: LD_INT 0
4210: PUSH
4211: EMPTY
4212: LIST
4213: LIST
4214: PPUSH
4215: CALL_OW 70
4219: PPUSH
4220: LD_EXP 41
4224: PUSH
4225: LD_INT 1
4227: ARRAY
4228: PPUSH
4229: CALL_OW 235
// SetSide ( FilterUnitsInArea ( RuBaseArea2 , [ f_side , 0 ] ) , randomedColors [ 1 ] ) ;
4233: LD_INT 4
4235: PPUSH
4236: LD_INT 22
4238: PUSH
4239: LD_INT 0
4241: PUSH
4242: EMPTY
4243: LIST
4244: LIST
4245: PPUSH
4246: CALL_OW 70
4250: PPUSH
4251: LD_EXP 41
4255: PUSH
4256: LD_INT 1
4258: ARRAY
4259: PPUSH
4260: CALL_OW 235
// SetSide ( FilterUnitsInArea ( RuBaseArea3 , [ f_side , 0 ] ) , randomedColors [ 1 ] ) ;
4264: LD_INT 5
4266: PPUSH
4267: LD_INT 22
4269: PUSH
4270: LD_INT 0
4272: PUSH
4273: EMPTY
4274: LIST
4275: LIST
4276: PPUSH
4277: CALL_OW 70
4281: PPUSH
4282: LD_EXP 41
4286: PUSH
4287: LD_INT 1
4289: ARRAY
4290: PPUSH
4291: CALL_OW 235
// end ;
4295: LD_VAR 0 1
4299: RET
// export function PrepareRussianBase ; var i ; begin
4300: LD_INT 0
4302: PPUSH
4303: PPUSH
// for i in FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_bunker ] , [ f_bweapon , 42 ] ] ) do
4304: LD_ADDR_VAR 0 2
4308: PUSH
4309: LD_INT 22
4311: PUSH
4312: LD_EXP 41
4316: PUSH
4317: LD_INT 1
4319: ARRAY
4320: PUSH
4321: EMPTY
4322: LIST
4323: LIST
4324: PUSH
4325: LD_INT 30
4327: PUSH
4328: LD_INT 32
4330: PUSH
4331: EMPTY
4332: LIST
4333: LIST
4334: PUSH
4335: LD_INT 35
4337: PUSH
4338: LD_INT 42
4340: PUSH
4341: EMPTY
4342: LIST
4343: LIST
4344: PUSH
4345: EMPTY
4346: LIST
4347: LIST
4348: LIST
4349: PPUSH
4350: CALL_OW 69
4354: PUSH
4355: FOR_IN
4356: IFFALSE 4431
// begin MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , i , difficulty_level , 1 , 1 ) ;
4358: LD_EXP 41
4362: PUSH
4363: LD_INT 1
4365: ARRAY
4366: PPUSH
4367: LD_INT 3
4369: PPUSH
4370: LD_VAR 0 2
4374: PPUSH
4375: LD_EXP 38
4379: PPUSH
4380: LD_INT 1
4382: PPUSH
4383: LD_INT 1
4385: PPUSH
4386: CALL 5621 0 6
// PlaceWeaponTurret ( i , [ 44 , 43 , 43 , 42 ] [ Rand ( 1 , 4 ) ] ) ;
4390: LD_VAR 0 2
4394: PPUSH
4395: LD_INT 44
4397: PUSH
4398: LD_INT 43
4400: PUSH
4401: LD_INT 43
4403: PUSH
4404: LD_INT 42
4406: PUSH
4407: EMPTY
4408: LIST
4409: LIST
4410: LIST
4411: LIST
4412: PUSH
4413: LD_INT 1
4415: PPUSH
4416: LD_INT 4
4418: PPUSH
4419: CALL_OW 12
4423: ARRAY
4424: PPUSH
4425: CALL_OW 431
// end ;
4429: GO 4355
4431: POP
4432: POP
// SetBLevel ( FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_type , unit_building ] ] ) , difficulty_level ) ;
4433: LD_INT 22
4435: PUSH
4436: LD_EXP 41
4440: PUSH
4441: LD_INT 1
4443: ARRAY
4444: PUSH
4445: EMPTY
4446: LIST
4447: LIST
4448: PUSH
4449: LD_INT 21
4451: PUSH
4452: LD_INT 3
4454: PUSH
4455: EMPTY
4456: LIST
4457: LIST
4458: PUSH
4459: EMPTY
4460: LIST
4461: LIST
4462: PPUSH
4463: CALL_OW 69
4467: PPUSH
4468: LD_EXP 38
4472: PPUSH
4473: CALL_OW 241
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rudepot1 , difficulty_level , 2 , 6 ) ;
4477: LD_EXP 41
4481: PUSH
4482: LD_INT 1
4484: ARRAY
4485: PPUSH
4486: LD_INT 3
4488: PPUSH
4489: LD_INT 13
4491: PPUSH
4492: LD_EXP 38
4496: PPUSH
4497: LD_INT 2
4499: PPUSH
4500: LD_INT 6
4502: PPUSH
4503: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rudepot2 , difficulty_level , 2 , 6 ) ;
4507: LD_EXP 41
4511: PUSH
4512: LD_INT 1
4514: ARRAY
4515: PPUSH
4516: LD_INT 3
4518: PPUSH
4519: LD_INT 18
4521: PPUSH
4522: LD_EXP 38
4526: PPUSH
4527: LD_INT 2
4529: PPUSH
4530: LD_INT 6
4532: PPUSH
4533: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rudepot3 , difficulty_level , 2 , 6 ) ;
4537: LD_EXP 41
4541: PUSH
4542: LD_INT 1
4544: ARRAY
4545: PPUSH
4546: LD_INT 3
4548: PPUSH
4549: LD_INT 41
4551: PPUSH
4552: LD_EXP 38
4556: PPUSH
4557: LD_INT 2
4559: PPUSH
4560: LD_INT 6
4562: PPUSH
4563: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab1 , difficulty_level , 3 , 6 ) ;
4567: LD_EXP 41
4571: PUSH
4572: LD_INT 1
4574: ARRAY
4575: PPUSH
4576: LD_INT 3
4578: PPUSH
4579: LD_INT 6
4581: PPUSH
4582: LD_EXP 38
4586: PPUSH
4587: LD_INT 3
4589: PPUSH
4590: LD_INT 6
4592: PPUSH
4593: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab2 , difficulty_level , 3 , 6 ) ;
4597: LD_EXP 41
4601: PUSH
4602: LD_INT 1
4604: ARRAY
4605: PPUSH
4606: LD_INT 3
4608: PPUSH
4609: LD_INT 19
4611: PPUSH
4612: LD_EXP 38
4616: PPUSH
4617: LD_INT 3
4619: PPUSH
4620: LD_INT 6
4622: PPUSH
4623: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab3 , difficulty_level , 3 , 6 ) ;
4627: LD_EXP 41
4631: PUSH
4632: LD_INT 1
4634: ARRAY
4635: PPUSH
4636: LD_INT 3
4638: PPUSH
4639: LD_INT 46
4641: PPUSH
4642: LD_EXP 38
4646: PPUSH
4647: LD_INT 3
4649: PPUSH
4650: LD_INT 6
4652: PPUSH
4653: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rulab1 , difficulty_level , 4 , 3 ) ;
4657: LD_EXP 41
4661: PUSH
4662: LD_INT 1
4664: ARRAY
4665: PPUSH
4666: LD_INT 3
4668: PPUSH
4669: LD_INT 36
4671: PPUSH
4672: LD_EXP 38
4676: PPUSH
4677: LD_INT 4
4679: PPUSH
4680: LD_INT 3
4682: PPUSH
4683: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rulab2 , difficulty_level , 4 , 3 ) ;
4687: LD_EXP 41
4691: PUSH
4692: LD_INT 1
4694: ARRAY
4695: PPUSH
4696: LD_INT 3
4698: PPUSH
4699: LD_INT 35
4701: PPUSH
4702: LD_EXP 38
4706: PPUSH
4707: LD_INT 4
4709: PPUSH
4710: LD_INT 3
4712: PPUSH
4713: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rulab3 , difficulty_level , 4 , 3 ) ;
4717: LD_EXP 41
4721: PUSH
4722: LD_INT 1
4724: ARRAY
4725: PPUSH
4726: LD_INT 3
4728: PPUSH
4729: LD_INT 48
4731: PPUSH
4732: LD_EXP 38
4736: PPUSH
4737: LD_INT 4
4739: PPUSH
4740: LD_INT 3
4742: PPUSH
4743: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rubar1 , difficulty_level , 1 , 3 ) ;
4747: LD_EXP 41
4751: PUSH
4752: LD_INT 1
4754: ARRAY
4755: PPUSH
4756: LD_INT 3
4758: PPUSH
4759: LD_INT 23
4761: PPUSH
4762: LD_EXP 38
4766: PPUSH
4767: LD_INT 1
4769: PPUSH
4770: LD_INT 3
4772: PPUSH
4773: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rubar2 , difficulty_level , 1 , 3 ) ;
4777: LD_EXP 41
4781: PUSH
4782: LD_INT 1
4784: ARRAY
4785: PPUSH
4786: LD_INT 3
4788: PPUSH
4789: LD_INT 103
4791: PPUSH
4792: LD_EXP 38
4796: PPUSH
4797: LD_INT 1
4799: PPUSH
4800: LD_INT 3
4802: PPUSH
4803: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rubar3 , difficulty_level , 1 , 3 ) ;
4807: LD_EXP 41
4811: PUSH
4812: LD_INT 1
4814: ARRAY
4815: PPUSH
4816: LD_INT 3
4818: PPUSH
4819: LD_INT 24
4821: PPUSH
4822: LD_EXP 38
4826: PPUSH
4827: LD_INT 1
4829: PPUSH
4830: LD_INT 3
4832: PPUSH
4833: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rubar4 , difficulty_level , 1 , 3 ) ;
4837: LD_EXP 41
4841: PUSH
4842: LD_INT 1
4844: ARRAY
4845: PPUSH
4846: LD_INT 3
4848: PPUSH
4849: LD_INT 178
4851: PPUSH
4852: LD_EXP 38
4856: PPUSH
4857: LD_INT 1
4859: PPUSH
4860: LD_INT 3
4862: PPUSH
4863: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rubar5 , difficulty_level , 1 , 3 ) ;
4867: LD_EXP 41
4871: PUSH
4872: LD_INT 1
4874: ARRAY
4875: PPUSH
4876: LD_INT 3
4878: PPUSH
4879: LD_INT 45
4881: PPUSH
4882: LD_EXP 38
4886: PPUSH
4887: LD_INT 1
4889: PPUSH
4890: LD_INT 3
4892: PPUSH
4893: CALL 5621 0 6
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rubar6 , difficulty_level , 1 , 3 ) ;
4897: LD_EXP 41
4901: PUSH
4902: LD_INT 1
4904: ARRAY
4905: PPUSH
4906: LD_INT 3
4908: PPUSH
4909: LD_INT 159
4911: PPUSH
4912: LD_EXP 38
4916: PPUSH
4917: LD_INT 1
4919: PPUSH
4920: LD_INT 3
4922: PPUSH
4923: CALL 5621 0 6
// SetTech ( 1 , randomedColors [ 1 ] , state_disabled ) ;
4927: LD_INT 1
4929: PPUSH
4930: LD_EXP 41
4934: PUSH
4935: LD_INT 1
4937: ARRAY
4938: PPUSH
4939: LD_INT 0
4941: PPUSH
4942: CALL_OW 322
// SetAttitude ( randomedColors [ 1 ] , randomedColors [ 2 ] , att_friend , true ) ;
4946: LD_EXP 41
4950: PUSH
4951: LD_INT 1
4953: ARRAY
4954: PPUSH
4955: LD_EXP 41
4959: PUSH
4960: LD_INT 2
4962: ARRAY
4963: PPUSH
4964: LD_INT 1
4966: PPUSH
4967: LD_INT 1
4969: PPUSH
4970: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP1 , att_enemy , true ) ;
4974: LD_EXP 41
4978: PUSH
4979: LD_INT 1
4981: ARRAY
4982: PPUSH
4983: LD_EXP 42
4987: PPUSH
4988: LD_INT 2
4990: PPUSH
4991: LD_INT 1
4993: PPUSH
4994: CALL_OW 80
// SetAttitude ( randomedColors [ 1 ] , sideP2 , att_enemy , true ) ;
4998: LD_EXP 41
5002: PUSH
5003: LD_INT 1
5005: ARRAY
5006: PPUSH
5007: LD_EXP 43
5011: PPUSH
5012: LD_INT 2
5014: PPUSH
5015: LD_INT 1
5017: PPUSH
5018: CALL_OW 80
// end ;
5022: LD_VAR 0 1
5026: RET
// export function MultiplayerColorCheck ; var i , tmp ; begin
5027: LD_INT 0
5029: PPUSH
5030: PPUSH
5031: PPUSH
// for i = 1 to Side_Positions do
5032: LD_ADDR_VAR 0 2
5036: PUSH
5037: DOUBLE
5038: LD_INT 1
5040: DEC
5041: ST_TO_ADDR
5042: LD_EXP 25
5046: PUSH
5047: FOR_TO
5048: IFFALSE 5078
// if Side_Positions [ i ] = 1 then
5050: LD_EXP 25
5054: PUSH
5055: LD_VAR 0 2
5059: ARRAY
5060: PUSH
5061: LD_INT 1
5063: EQUAL
5064: IFFALSE 5076
// sideP1 = i ;
5066: LD_ADDR_EXP 42
5070: PUSH
5071: LD_VAR 0 2
5075: ST_TO_ADDR
5076: GO 5047
5078: POP
5079: POP
// for i = 1 to Side_Positions do
5080: LD_ADDR_VAR 0 2
5084: PUSH
5085: DOUBLE
5086: LD_INT 1
5088: DEC
5089: ST_TO_ADDR
5090: LD_EXP 25
5094: PUSH
5095: FOR_TO
5096: IFFALSE 5126
// if Side_Positions [ i ] = 2 then
5098: LD_EXP 25
5102: PUSH
5103: LD_VAR 0 2
5107: ARRAY
5108: PUSH
5109: LD_INT 2
5111: EQUAL
5112: IFFALSE 5124
// sideP2 = i ;
5114: LD_ADDR_EXP 43
5118: PUSH
5119: LD_VAR 0 2
5123: ST_TO_ADDR
5124: GO 5095
5126: POP
5127: POP
// randomedColors = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] diff sideP1 ^ sideP2 ;
5128: LD_ADDR_EXP 41
5132: PUSH
5133: LD_INT 1
5135: PUSH
5136: LD_INT 2
5138: PUSH
5139: LD_INT 3
5141: PUSH
5142: LD_INT 4
5144: PUSH
5145: LD_INT 5
5147: PUSH
5148: LD_INT 6
5150: PUSH
5151: LD_INT 7
5153: PUSH
5154: LD_INT 8
5156: PUSH
5157: EMPTY
5158: LIST
5159: LIST
5160: LIST
5161: LIST
5162: LIST
5163: LIST
5164: LIST
5165: LIST
5166: PUSH
5167: LD_EXP 42
5171: PUSH
5172: LD_EXP 43
5176: ADD
5177: DIFF
5178: ST_TO_ADDR
// end ;
5179: LD_VAR 0 1
5183: RET
// export function PrepareDifficulty ; begin
5184: LD_INT 0
5186: PPUSH
// if difficulty_level > 5 then
5187: LD_EXP 38
5191: PUSH
5192: LD_INT 5
5194: GREATER
5195: IFFALSE 5330
// begin SetTech ( 48 , randomedColors [ 2 ] , state_researched ) ;
5197: LD_INT 48
5199: PPUSH
5200: LD_EXP 41
5204: PUSH
5205: LD_INT 2
5207: ARRAY
5208: PPUSH
5209: LD_INT 2
5211: PPUSH
5212: CALL_OW 322
// SetTech ( 51 , randomedColors [ 2 ] , state_researched ) ;
5216: LD_INT 51
5218: PPUSH
5219: LD_EXP 41
5223: PUSH
5224: LD_INT 2
5226: ARRAY
5227: PPUSH
5228: LD_INT 2
5230: PPUSH
5231: CALL_OW 322
// SetTech ( 54 , randomedColors [ 2 ] , state_researched ) ;
5235: LD_INT 54
5237: PPUSH
5238: LD_EXP 41
5242: PUSH
5243: LD_INT 2
5245: ARRAY
5246: PPUSH
5247: LD_INT 2
5249: PPUSH
5250: CALL_OW 322
// SetTech ( 57 , randomedColors [ 2 ] , state_researched ) ;
5254: LD_INT 57
5256: PPUSH
5257: LD_EXP 41
5261: PUSH
5262: LD_INT 2
5264: ARRAY
5265: PPUSH
5266: LD_INT 2
5268: PPUSH
5269: CALL_OW 322
// SetTech ( 60 , randomedColors [ 2 ] , state_researched ) ;
5273: LD_INT 60
5275: PPUSH
5276: LD_EXP 41
5280: PUSH
5281: LD_INT 2
5283: ARRAY
5284: PPUSH
5285: LD_INT 2
5287: PPUSH
5288: CALL_OW 322
// SetTech ( 63 , randomedColors [ 2 ] , state_researched ) ;
5292: LD_INT 63
5294: PPUSH
5295: LD_EXP 41
5299: PUSH
5300: LD_INT 2
5302: ARRAY
5303: PPUSH
5304: LD_INT 2
5306: PPUSH
5307: CALL_OW 322
// SetTech ( 66 , randomedColors [ 2 ] , state_researched ) ;
5311: LD_INT 66
5313: PPUSH
5314: LD_EXP 41
5318: PUSH
5319: LD_INT 2
5321: ARRAY
5322: PPUSH
5323: LD_INT 2
5325: PPUSH
5326: CALL_OW 322
// end ; if difficulty_level > 6 then
5330: LD_EXP 38
5334: PUSH
5335: LD_INT 6
5337: GREATER
5338: IFFALSE 5473
// begin SetTech ( 49 , randomedColors [ 2 ] , state_researched ) ;
5340: LD_INT 49
5342: PPUSH
5343: LD_EXP 41
5347: PUSH
5348: LD_INT 2
5350: ARRAY
5351: PPUSH
5352: LD_INT 2
5354: PPUSH
5355: CALL_OW 322
// SetTech ( 52 , randomedColors [ 2 ] , state_researched ) ;
5359: LD_INT 52
5361: PPUSH
5362: LD_EXP 41
5366: PUSH
5367: LD_INT 2
5369: ARRAY
5370: PPUSH
5371: LD_INT 2
5373: PPUSH
5374: CALL_OW 322
// SetTech ( 55 , randomedColors [ 2 ] , state_researched ) ;
5378: LD_INT 55
5380: PPUSH
5381: LD_EXP 41
5385: PUSH
5386: LD_INT 2
5388: ARRAY
5389: PPUSH
5390: LD_INT 2
5392: PPUSH
5393: CALL_OW 322
// SetTech ( 58 , randomedColors [ 2 ] , state_researched ) ;
5397: LD_INT 58
5399: PPUSH
5400: LD_EXP 41
5404: PUSH
5405: LD_INT 2
5407: ARRAY
5408: PPUSH
5409: LD_INT 2
5411: PPUSH
5412: CALL_OW 322
// SetTech ( 61 , randomedColors [ 2 ] , state_researched ) ;
5416: LD_INT 61
5418: PPUSH
5419: LD_EXP 41
5423: PUSH
5424: LD_INT 2
5426: ARRAY
5427: PPUSH
5428: LD_INT 2
5430: PPUSH
5431: CALL_OW 322
// SetTech ( 64 , randomedColors [ 2 ] , state_researched ) ;
5435: LD_INT 64
5437: PPUSH
5438: LD_EXP 41
5442: PUSH
5443: LD_INT 2
5445: ARRAY
5446: PPUSH
5447: LD_INT 2
5449: PPUSH
5450: CALL_OW 322
// SetTech ( 67 , randomedColors [ 2 ] , state_researched ) ;
5454: LD_INT 67
5456: PPUSH
5457: LD_EXP 41
5461: PUSH
5462: LD_INT 2
5464: ARRAY
5465: PPUSH
5466: LD_INT 2
5468: PPUSH
5469: CALL_OW 322
// end ; if difficulty_level > 8 then
5473: LD_EXP 38
5477: PUSH
5478: LD_INT 8
5480: GREATER
5481: IFFALSE 5616
// begin SetTech ( 50 , randomedColors [ 2 ] , state_researched ) ;
5483: LD_INT 50
5485: PPUSH
5486: LD_EXP 41
5490: PUSH
5491: LD_INT 2
5493: ARRAY
5494: PPUSH
5495: LD_INT 2
5497: PPUSH
5498: CALL_OW 322
// SetTech ( 53 , randomedColors [ 2 ] , state_researched ) ;
5502: LD_INT 53
5504: PPUSH
5505: LD_EXP 41
5509: PUSH
5510: LD_INT 2
5512: ARRAY
5513: PPUSH
5514: LD_INT 2
5516: PPUSH
5517: CALL_OW 322
// SetTech ( 56 , randomedColors [ 2 ] , state_researched ) ;
5521: LD_INT 56
5523: PPUSH
5524: LD_EXP 41
5528: PUSH
5529: LD_INT 2
5531: ARRAY
5532: PPUSH
5533: LD_INT 2
5535: PPUSH
5536: CALL_OW 322
// SetTech ( 59 , randomedColors [ 2 ] , state_researched ) ;
5540: LD_INT 59
5542: PPUSH
5543: LD_EXP 41
5547: PUSH
5548: LD_INT 2
5550: ARRAY
5551: PPUSH
5552: LD_INT 2
5554: PPUSH
5555: CALL_OW 322
// SetTech ( 62 , randomedColors [ 2 ] , state_researched ) ;
5559: LD_INT 62
5561: PPUSH
5562: LD_EXP 41
5566: PUSH
5567: LD_INT 2
5569: ARRAY
5570: PPUSH
5571: LD_INT 2
5573: PPUSH
5574: CALL_OW 322
// SetTech ( 65 , randomedColors [ 2 ] , state_researched ) ;
5578: LD_INT 65
5580: PPUSH
5581: LD_EXP 41
5585: PUSH
5586: LD_INT 2
5588: ARRAY
5589: PPUSH
5590: LD_INT 2
5592: PPUSH
5593: CALL_OW 322
// SetTech ( 68 , randomedColors [ 2 ] , state_researched ) ;
5597: LD_INT 68
5599: PPUSH
5600: LD_EXP 41
5604: PUSH
5605: LD_INT 2
5607: ARRAY
5608: PPUSH
5609: LD_INT 2
5611: PPUSH
5612: CALL_OW 322
// end ; end ;
5616: LD_VAR 0 1
5620: RET
// export function MultiplayerRespawnInside ( side , nation , build , skill , class , count ) ; var i , l , un ; begin
5621: LD_INT 0
5623: PPUSH
5624: PPUSH
5625: PPUSH
5626: PPUSH
// for i = 1 to count do
5627: LD_ADDR_VAR 0 8
5631: PUSH
5632: DOUBLE
5633: LD_INT 1
5635: DEC
5636: ST_TO_ADDR
5637: LD_VAR 0 6
5641: PUSH
5642: FOR_TO
5643: IFFALSE 5787
// begin uc_side = side ;
5645: LD_ADDR_OWVAR 20
5649: PUSH
5650: LD_VAR 0 1
5654: ST_TO_ADDR
// uc_nation = nation ;
5655: LD_ADDR_OWVAR 21
5659: PUSH
5660: LD_VAR 0 2
5664: ST_TO_ADDR
// hc_gallery =  ;
5665: LD_ADDR_OWVAR 33
5669: PUSH
5670: LD_STRING 
5672: ST_TO_ADDR
// hc_name =  ;
5673: LD_ADDR_OWVAR 26
5677: PUSH
5678: LD_STRING 
5680: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
5681: LD_ADDR_OWVAR 29
5685: PUSH
5686: LD_INT 10
5688: PUSH
5689: LD_INT 10
5691: PUSH
5692: EMPTY
5693: LIST
5694: LIST
5695: ST_TO_ADDR
// hc_skills = [ skill , skill , skill , skill ] ;
5696: LD_ADDR_OWVAR 31
5700: PUSH
5701: LD_VAR 0 4
5705: PUSH
5706: LD_VAR 0 4
5710: PUSH
5711: LD_VAR 0 4
5715: PUSH
5716: LD_VAR 0 4
5720: PUSH
5721: EMPTY
5722: LIST
5723: LIST
5724: LIST
5725: LIST
5726: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
5727: LD_ADDR_OWVAR 27
5731: PUSH
5732: LD_INT 1
5734: PPUSH
5735: LD_INT 2
5737: PPUSH
5738: CALL_OW 12
5742: ST_TO_ADDR
// hc_class = class ;
5743: LD_ADDR_OWVAR 28
5747: PUSH
5748: LD_VAR 0 5
5752: ST_TO_ADDR
// hc_importance = 0 ;
5753: LD_ADDR_OWVAR 32
5757: PUSH
5758: LD_INT 0
5760: ST_TO_ADDR
// un = CreateHuman ;
5761: LD_ADDR_VAR 0 10
5765: PUSH
5766: CALL_OW 44
5770: ST_TO_ADDR
// PlaceHumanInUnit ( un , build ) ;
5771: LD_VAR 0 10
5775: PPUSH
5776: LD_VAR 0 3
5780: PPUSH
5781: CALL_OW 52
// end ;
5785: GO 5642
5787: POP
5788: POP
// end ;
5789: LD_VAR 0 7
5793: RET
// export function ResAllTechs ( side , lab , nation ) ; var i , tech , cout ; begin
5794: LD_INT 0
5796: PPUSH
5797: PPUSH
5798: PPUSH
5799: PPUSH
// for i = 1 to 72 do
5800: LD_ADDR_VAR 0 5
5804: PUSH
5805: DOUBLE
5806: LD_INT 1
5808: DEC
5809: ST_TO_ADDR
5810: LD_INT 72
5812: PUSH
5813: FOR_TO
5814: IFFALSE 5872
// if GetTech ( i , side ) = state_enabled and TechNationAvailable ( i , nation ) = true then
5816: LD_VAR 0 5
5820: PPUSH
5821: LD_VAR 0 1
5825: PPUSH
5826: CALL_OW 321
5830: PUSH
5831: LD_INT 1
5833: EQUAL
5834: PUSH
5835: LD_VAR 0 5
5839: PPUSH
5840: LD_VAR 0 3
5844: PPUSH
5845: CALL_OW 482
5849: PUSH
5850: LD_INT 1
5852: EQUAL
5853: AND
5854: IFFALSE 5870
// AddComResearch ( lab , i ) ;
5856: LD_VAR 0 2
5860: PPUSH
5861: LD_VAR 0 5
5865: PPUSH
5866: CALL_OW 184
5870: GO 5813
5872: POP
5873: POP
// end ;
5874: LD_VAR 0 4
5878: RET
// export function EnterBunkerOrBarrack ( side , area ) ; var i , j , soldiers_list , turretList , temp , barrackList , insideUnits ; begin
5879: LD_INT 0
5881: PPUSH
5882: PPUSH
5883: PPUSH
5884: PPUSH
5885: PPUSH
5886: PPUSH
5887: PPUSH
5888: PPUSH
// soldiers_list = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_outside ] , [ f_lives , 700 ] , [ f_not , [ f_hastask ] ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
5889: LD_ADDR_VAR 0 6
5893: PUSH
5894: LD_VAR 0 2
5898: PPUSH
5899: LD_INT 22
5901: PUSH
5902: LD_VAR 0 1
5906: PUSH
5907: EMPTY
5908: LIST
5909: LIST
5910: PUSH
5911: LD_INT 56
5913: PUSH
5914: EMPTY
5915: LIST
5916: PUSH
5917: LD_INT 24
5919: PUSH
5920: LD_INT 700
5922: PUSH
5923: EMPTY
5924: LIST
5925: LIST
5926: PUSH
5927: LD_INT 3
5929: PUSH
5930: LD_INT 60
5932: PUSH
5933: EMPTY
5934: LIST
5935: PUSH
5936: EMPTY
5937: LIST
5938: LIST
5939: PUSH
5940: LD_INT 2
5942: PUSH
5943: LD_INT 25
5945: PUSH
5946: LD_INT 1
5948: PUSH
5949: EMPTY
5950: LIST
5951: LIST
5952: PUSH
5953: LD_INT 25
5955: PUSH
5956: LD_INT 5
5958: PUSH
5959: EMPTY
5960: LIST
5961: LIST
5962: PUSH
5963: LD_INT 25
5965: PUSH
5966: LD_INT 8
5968: PUSH
5969: EMPTY
5970: LIST
5971: LIST
5972: PUSH
5973: LD_INT 25
5975: PUSH
5976: LD_INT 9
5978: PUSH
5979: EMPTY
5980: LIST
5981: LIST
5982: PUSH
5983: EMPTY
5984: LIST
5985: LIST
5986: LIST
5987: LIST
5988: LIST
5989: PUSH
5990: EMPTY
5991: LIST
5992: LIST
5993: LIST
5994: LIST
5995: LIST
5996: PPUSH
5997: CALL_OW 70
6001: ST_TO_ADDR
// turretList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_btype , b_bunker ] , [ f_empty ] , [ f_lives , 251 ] ] ) ;
6002: LD_ADDR_VAR 0 7
6006: PUSH
6007: LD_VAR 0 2
6011: PPUSH
6012: LD_INT 22
6014: PUSH
6015: LD_VAR 0 1
6019: PUSH
6020: EMPTY
6021: LIST
6022: LIST
6023: PUSH
6024: LD_INT 30
6026: PUSH
6027: LD_INT 32
6029: PUSH
6030: EMPTY
6031: LIST
6032: LIST
6033: PUSH
6034: LD_INT 58
6036: PUSH
6037: EMPTY
6038: LIST
6039: PUSH
6040: LD_INT 24
6042: PUSH
6043: LD_INT 251
6045: PUSH
6046: EMPTY
6047: LIST
6048: LIST
6049: PUSH
6050: EMPTY
6051: LIST
6052: LIST
6053: LIST
6054: LIST
6055: PPUSH
6056: CALL_OW 70
6060: ST_TO_ADDR
// barrackList = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_or , [ f_btype , 4 ] , [ f_btype , 5 ] ] , [ f_lives , 251 ] ] ) ;
6061: LD_ADDR_VAR 0 9
6065: PUSH
6066: LD_VAR 0 2
6070: PPUSH
6071: LD_INT 22
6073: PUSH
6074: LD_VAR 0 1
6078: PUSH
6079: EMPTY
6080: LIST
6081: LIST
6082: PUSH
6083: LD_INT 2
6085: PUSH
6086: LD_INT 30
6088: PUSH
6089: LD_INT 4
6091: PUSH
6092: EMPTY
6093: LIST
6094: LIST
6095: PUSH
6096: LD_INT 30
6098: PUSH
6099: LD_INT 5
6101: PUSH
6102: EMPTY
6103: LIST
6104: LIST
6105: PUSH
6106: EMPTY
6107: LIST
6108: LIST
6109: LIST
6110: PUSH
6111: LD_INT 24
6113: PUSH
6114: LD_INT 251
6116: PUSH
6117: EMPTY
6118: LIST
6119: LIST
6120: PUSH
6121: EMPTY
6122: LIST
6123: LIST
6124: LIST
6125: PPUSH
6126: CALL_OW 70
6130: ST_TO_ADDR
// if barrackList > 0 then
6131: LD_VAR 0 9
6135: PUSH
6136: LD_INT 0
6138: GREATER
6139: IFFALSE 6277
// begin if turretList = 0 then
6141: LD_VAR 0 7
6145: PUSH
6146: LD_INT 0
6148: EQUAL
6149: IFFALSE 6181
// begin ComEnterUnit ( soldiers_list , barrackList [ Rand ( 1 , barrackList ) ] ) ;
6151: LD_VAR 0 6
6155: PPUSH
6156: LD_VAR 0 9
6160: PUSH
6161: LD_INT 1
6163: PPUSH
6164: LD_VAR 0 9
6168: PPUSH
6169: CALL_OW 12
6173: ARRAY
6174: PPUSH
6175: CALL_OW 120
// end else
6179: GO 6277
// begin for i in barrackList do
6181: LD_ADDR_VAR 0 4
6185: PUSH
6186: LD_VAR 0 9
6190: PUSH
6191: FOR_IN
6192: IFFALSE 6275
// begin insideUnits = UnitsInside ( i ) ;
6194: LD_ADDR_VAR 0 10
6198: PUSH
6199: LD_VAR 0 4
6203: PPUSH
6204: CALL_OW 313
6208: ST_TO_ADDR
// if insideUnits > 0 then
6209: LD_VAR 0 10
6213: PUSH
6214: LD_INT 0
6216: GREATER
6217: IFFALSE 6241
// ComEnterUnit ( insideUnits [ 1 ] , turretList [ 1 ] ) ;
6219: LD_VAR 0 10
6223: PUSH
6224: LD_INT 1
6226: ARRAY
6227: PPUSH
6228: LD_VAR 0 7
6232: PUSH
6233: LD_INT 1
6235: ARRAY
6236: PPUSH
6237: CALL_OW 120
// if soldiers_list > 0 then
6241: LD_VAR 0 6
6245: PUSH
6246: LD_INT 0
6248: GREATER
6249: IFFALSE 6273
// ComEnterUnit ( soldiers_list [ 1 ] , turretList [ 1 ] ) ;
6251: LD_VAR 0 6
6255: PUSH
6256: LD_INT 1
6258: ARRAY
6259: PPUSH
6260: LD_VAR 0 7
6264: PUSH
6265: LD_INT 1
6267: ARRAY
6268: PPUSH
6269: CALL_OW 120
// end ;
6273: GO 6191
6275: POP
6276: POP
// end ; end ; end ;
6277: LD_VAR 0 3
6281: RET
// export function RepairAndRebuildBase ( side , building , area , destroyedBuildings ) ; var buildings_list , i , engineerOkInside , engineerOkOutside , j ; begin
6282: LD_INT 0
6284: PPUSH
6285: PPUSH
6286: PPUSH
6287: PPUSH
6288: PPUSH
6289: PPUSH
// engineerOkInside = UnitsInside ( building ) ;
6290: LD_ADDR_VAR 0 8
6294: PUSH
6295: LD_VAR 0 2
6299: PPUSH
6300: CALL_OW 313
6304: ST_TO_ADDR
// engineerOkOutside = FilterUnitsInArea ( area , [ [ f_side , side ] , [ f_class , 2 ] , [ f_lives , 750 ] , [ f_not , [ f_inside ] ] ] ) ;
6305: LD_ADDR_VAR 0 9
6309: PUSH
6310: LD_VAR 0 3
6314: PPUSH
6315: LD_INT 22
6317: PUSH
6318: LD_VAR 0 1
6322: PUSH
6323: EMPTY
6324: LIST
6325: LIST
6326: PUSH
6327: LD_INT 25
6329: PUSH
6330: LD_INT 2
6332: PUSH
6333: EMPTY
6334: LIST
6335: LIST
6336: PUSH
6337: LD_INT 24
6339: PUSH
6340: LD_INT 750
6342: PUSH
6343: EMPTY
6344: LIST
6345: LIST
6346: PUSH
6347: LD_INT 3
6349: PUSH
6350: LD_INT 54
6352: PUSH
6353: EMPTY
6354: LIST
6355: PUSH
6356: EMPTY
6357: LIST
6358: LIST
6359: PUSH
6360: EMPTY
6361: LIST
6362: LIST
6363: LIST
6364: LIST
6365: PPUSH
6366: CALL_OW 70
6370: ST_TO_ADDR
// buildings_list = FilterUnitsInArea ( area , [ [ [ f_side , side ] , [ f_type , unit_building ] , [ f_not , [ f_lives , 1000 ] ] ] ] ) ;
6371: LD_ADDR_VAR 0 6
6375: PUSH
6376: LD_VAR 0 3
6380: PPUSH
6381: LD_INT 22
6383: PUSH
6384: LD_VAR 0 1
6388: PUSH
6389: EMPTY
6390: LIST
6391: LIST
6392: PUSH
6393: LD_INT 21
6395: PUSH
6396: LD_INT 3
6398: PUSH
6399: EMPTY
6400: LIST
6401: LIST
6402: PUSH
6403: LD_INT 3
6405: PUSH
6406: LD_INT 24
6408: PUSH
6409: LD_INT 1000
6411: PUSH
6412: EMPTY
6413: LIST
6414: LIST
6415: PUSH
6416: EMPTY
6417: LIST
6418: LIST
6419: PUSH
6420: EMPTY
6421: LIST
6422: LIST
6423: LIST
6424: PUSH
6425: EMPTY
6426: LIST
6427: PPUSH
6428: CALL_OW 70
6432: ST_TO_ADDR
// if buildings_list > 0 and engineerOkInside then
6433: LD_VAR 0 6
6437: PUSH
6438: LD_INT 0
6440: GREATER
6441: PUSH
6442: LD_VAR 0 8
6446: AND
6447: IFFALSE 6458
// ComExitBuilding ( engineerOkInside ) ;
6449: LD_VAR 0 8
6453: PPUSH
6454: CALL_OW 122
// if buildings_list > 0 and engineerOkOutside > 0 then
6458: LD_VAR 0 6
6462: PUSH
6463: LD_INT 0
6465: GREATER
6466: PUSH
6467: LD_VAR 0 9
6471: PUSH
6472: LD_INT 0
6474: GREATER
6475: AND
6476: IFFALSE 6496
// ComRepairBuilding ( engineerOkOutside , buildings_list [ 1 ] ) ;
6478: LD_VAR 0 9
6482: PPUSH
6483: LD_VAR 0 6
6487: PUSH
6488: LD_INT 1
6490: ARRAY
6491: PPUSH
6492: CALL_OW 130
// if buildings_list = 0 and destroyedBuildings = 0 and engineerOkOutside > 0 then
6496: LD_VAR 0 6
6500: PUSH
6501: LD_INT 0
6503: EQUAL
6504: PUSH
6505: LD_VAR 0 4
6509: PUSH
6510: LD_INT 0
6512: EQUAL
6513: AND
6514: PUSH
6515: LD_VAR 0 9
6519: PUSH
6520: LD_INT 0
6522: GREATER
6523: AND
6524: IFFALSE 6540
// ComEnterUnit ( engineerOkOutside , building ) ;
6526: LD_VAR 0 9
6530: PPUSH
6531: LD_VAR 0 2
6535: PPUSH
6536: CALL_OW 120
// if engineerOkOutside > 0 and buildings_list = 0 and destroyedBuildings > 0 then
6540: LD_VAR 0 9
6544: PUSH
6545: LD_INT 0
6547: GREATER
6548: PUSH
6549: LD_VAR 0 6
6553: PUSH
6554: LD_INT 0
6556: EQUAL
6557: AND
6558: PUSH
6559: LD_VAR 0 4
6563: PUSH
6564: LD_INT 0
6566: GREATER
6567: AND
6568: IFFALSE 6615
// ComBuild ( engineerOkOutside , destroyedBuildings [ 1 ] , destroyedBuildings [ 2 ] , destroyedBuildings [ 3 ] , destroyedBuildings [ 4 ] ) ;
6570: LD_VAR 0 9
6574: PPUSH
6575: LD_VAR 0 4
6579: PUSH
6580: LD_INT 1
6582: ARRAY
6583: PPUSH
6584: LD_VAR 0 4
6588: PUSH
6589: LD_INT 2
6591: ARRAY
6592: PPUSH
6593: LD_VAR 0 4
6597: PUSH
6598: LD_INT 3
6600: ARRAY
6601: PPUSH
6602: LD_VAR 0 4
6606: PUSH
6607: LD_INT 4
6609: ARRAY
6610: PPUSH
6611: CALL_OW 145
// end ;
6615: LD_VAR 0 5
6619: RET
// export function HealUnitInBase ( side , healArea , baseArea , build ) ; var sci_list , sci_listOutside , i , j , damageUnits , unitsToHeal , tmp , rnd ; begin
6620: LD_INT 0
6622: PPUSH
6623: PPUSH
6624: PPUSH
6625: PPUSH
6626: PPUSH
6627: PPUSH
6628: PPUSH
6629: PPUSH
6630: PPUSH
// sci_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] , [ f_nation , 2 ] , [ f_lives , 251 ] ] ) ;
6631: LD_ADDR_VAR 0 6
6635: PUSH
6636: LD_INT 22
6638: PUSH
6639: LD_VAR 0 1
6643: PUSH
6644: EMPTY
6645: LIST
6646: LIST
6647: PUSH
6648: LD_INT 25
6650: PUSH
6651: LD_INT 4
6653: PUSH
6654: EMPTY
6655: LIST
6656: LIST
6657: PUSH
6658: LD_INT 23
6660: PUSH
6661: LD_INT 2
6663: PUSH
6664: EMPTY
6665: LIST
6666: LIST
6667: PUSH
6668: LD_INT 24
6670: PUSH
6671: LD_INT 251
6673: PUSH
6674: EMPTY
6675: LIST
6676: LIST
6677: PUSH
6678: EMPTY
6679: LIST
6680: LIST
6681: LIST
6682: LIST
6683: PPUSH
6684: CALL_OW 69
6688: ST_TO_ADDR
// sci_listOutside = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_nation , 2 ] , [ f_class , 4 ] , [ f_ok ] ] ) ;
6689: LD_ADDR_VAR 0 7
6693: PUSH
6694: LD_VAR 0 3
6698: PPUSH
6699: LD_INT 22
6701: PUSH
6702: LD_VAR 0 1
6706: PUSH
6707: EMPTY
6708: LIST
6709: LIST
6710: PUSH
6711: LD_INT 23
6713: PUSH
6714: LD_INT 2
6716: PUSH
6717: EMPTY
6718: LIST
6719: LIST
6720: PUSH
6721: LD_INT 25
6723: PUSH
6724: LD_INT 4
6726: PUSH
6727: EMPTY
6728: LIST
6729: LIST
6730: PUSH
6731: LD_INT 50
6733: PUSH
6734: EMPTY
6735: LIST
6736: PUSH
6737: EMPTY
6738: LIST
6739: LIST
6740: LIST
6741: LIST
6742: PPUSH
6743: CALL_OW 70
6747: ST_TO_ADDR
// damageUnits = FilterUnitsInArea ( baseArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 750 ] ] ] ) ;
6748: LD_ADDR_VAR 0 10
6752: PUSH
6753: LD_VAR 0 3
6757: PPUSH
6758: LD_INT 22
6760: PUSH
6761: LD_VAR 0 1
6765: PUSH
6766: EMPTY
6767: LIST
6768: LIST
6769: PUSH
6770: LD_INT 21
6772: PUSH
6773: LD_INT 1
6775: PUSH
6776: EMPTY
6777: LIST
6778: LIST
6779: PUSH
6780: LD_INT 3
6782: PUSH
6783: LD_INT 25
6785: PUSH
6786: LD_INT 3
6788: PUSH
6789: EMPTY
6790: LIST
6791: LIST
6792: PUSH
6793: EMPTY
6794: LIST
6795: LIST
6796: PUSH
6797: LD_INT 3
6799: PUSH
6800: LD_INT 24
6802: PUSH
6803: LD_INT 750
6805: PUSH
6806: EMPTY
6807: LIST
6808: LIST
6809: PUSH
6810: EMPTY
6811: LIST
6812: LIST
6813: PUSH
6814: EMPTY
6815: LIST
6816: LIST
6817: LIST
6818: LIST
6819: PPUSH
6820: CALL_OW 70
6824: ST_TO_ADDR
// unitsToHeal = FilterUnitsInArea ( healArea , [ [ f_side , side ] , [ f_type , unit_human ] , [ f_not , [ f_class , 3 ] ] , [ f_not , [ f_lives , 1000 ] ] ] ) ;
6825: LD_ADDR_VAR 0 11
6829: PUSH
6830: LD_VAR 0 2
6834: PPUSH
6835: LD_INT 22
6837: PUSH
6838: LD_VAR 0 1
6842: PUSH
6843: EMPTY
6844: LIST
6845: LIST
6846: PUSH
6847: LD_INT 21
6849: PUSH
6850: LD_INT 1
6852: PUSH
6853: EMPTY
6854: LIST
6855: LIST
6856: PUSH
6857: LD_INT 3
6859: PUSH
6860: LD_INT 25
6862: PUSH
6863: LD_INT 3
6865: PUSH
6866: EMPTY
6867: LIST
6868: LIST
6869: PUSH
6870: EMPTY
6871: LIST
6872: LIST
6873: PUSH
6874: LD_INT 3
6876: PUSH
6877: LD_INT 24
6879: PUSH
6880: LD_INT 1000
6882: PUSH
6883: EMPTY
6884: LIST
6885: LIST
6886: PUSH
6887: EMPTY
6888: LIST
6889: LIST
6890: PUSH
6891: EMPTY
6892: LIST
6893: LIST
6894: LIST
6895: LIST
6896: PPUSH
6897: CALL_OW 70
6901: ST_TO_ADDR
// if damageUnits > 0 and sci_list > 0 then
6902: LD_VAR 0 10
6906: PUSH
6907: LD_INT 0
6909: GREATER
6910: PUSH
6911: LD_VAR 0 6
6915: PUSH
6916: LD_INT 0
6918: GREATER
6919: AND
6920: IFFALSE 6936
// ComMoveToArea ( damageUnits , healArea ) ;
6922: LD_VAR 0 10
6926: PPUSH
6927: LD_VAR 0 2
6931: PPUSH
6932: CALL_OW 113
// if unitsToHeal > 0 and sci_list > 0 then
6936: LD_VAR 0 11
6940: PUSH
6941: LD_INT 0
6943: GREATER
6944: PUSH
6945: LD_VAR 0 6
6949: PUSH
6950: LD_INT 0
6952: GREATER
6953: AND
6954: IFFALSE 6965
// ComExitBuilding ( sci_list ) ;
6956: LD_VAR 0 6
6960: PPUSH
6961: CALL_OW 122
// if unitsToHeal > 0 and sci_listOutside > 0 then
6965: LD_VAR 0 11
6969: PUSH
6970: LD_INT 0
6972: GREATER
6973: PUSH
6974: LD_VAR 0 7
6978: PUSH
6979: LD_INT 0
6981: GREATER
6982: AND
6983: IFFALSE 7003
// ComHeal ( sci_listOutside , unitsToHeal [ 1 ] ) ;
6985: LD_VAR 0 7
6989: PPUSH
6990: LD_VAR 0 11
6994: PUSH
6995: LD_INT 1
6997: ARRAY
6998: PPUSH
6999: CALL_OW 128
// if damageUnits = 0 and unitsToHeal = 0 and sci_listOutside > 0 then
7003: LD_VAR 0 10
7007: PUSH
7008: LD_INT 0
7010: EQUAL
7011: PUSH
7012: LD_VAR 0 11
7016: PUSH
7017: LD_INT 0
7019: EQUAL
7020: AND
7021: PUSH
7022: LD_VAR 0 7
7026: PUSH
7027: LD_INT 0
7029: GREATER
7030: AND
7031: IFFALSE 7136
// begin tmp = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_building ] , [ f_btype , b_lab_full ] ] ) ;
7033: LD_ADDR_VAR 0 12
7037: PUSH
7038: LD_INT 22
7040: PUSH
7041: LD_VAR 0 1
7045: PUSH
7046: EMPTY
7047: LIST
7048: LIST
7049: PUSH
7050: LD_INT 21
7052: PUSH
7053: LD_INT 3
7055: PUSH
7056: EMPTY
7057: LIST
7058: LIST
7059: PUSH
7060: LD_INT 30
7062: PUSH
7063: LD_INT 8
7065: PUSH
7066: EMPTY
7067: LIST
7068: LIST
7069: PUSH
7070: EMPTY
7071: LIST
7072: LIST
7073: LIST
7074: PPUSH
7075: CALL_OW 69
7079: ST_TO_ADDR
// rnd = rand ( 1 , tmp ) ;
7080: LD_ADDR_VAR 0 13
7084: PUSH
7085: LD_INT 1
7087: PPUSH
7088: LD_VAR 0 12
7092: PPUSH
7093: CALL_OW 12
7097: ST_TO_ADDR
// ComEnterUnit ( UnitFilter ( sci_listOutside , [ f_not , [ f_hastask ] ] ) , tmp [ rnd ] ) ;
7098: LD_VAR 0 7
7102: PPUSH
7103: LD_INT 3
7105: PUSH
7106: LD_INT 60
7108: PUSH
7109: EMPTY
7110: LIST
7111: PUSH
7112: EMPTY
7113: LIST
7114: LIST
7115: PPUSH
7116: CALL_OW 72
7120: PPUSH
7121: LD_VAR 0 12
7125: PUSH
7126: LD_VAR 0 13
7130: ARRAY
7131: PPUSH
7132: CALL_OW 120
// end ; end ;
7136: LD_VAR 0 5
7140: RET
// export function BuildingVehicleEnemy ( fabric , vehCount , weaponTab , engine , control , chassis ) ; var i , weapon ; begin
7141: LD_INT 0
7143: PPUSH
7144: PPUSH
7145: PPUSH
// for i = 1 to vehCount do
7146: LD_ADDR_VAR 0 8
7150: PUSH
7151: DOUBLE
7152: LD_INT 1
7154: DEC
7155: ST_TO_ADDR
7156: LD_VAR 0 2
7160: PUSH
7161: FOR_TO
7162: IFFALSE 7209
// AddComConstruct ( fabric , chassis , engine , control , weaponTab [ Rand ( 1 , weaponTab ) ] ) ;
7164: LD_VAR 0 1
7168: PPUSH
7169: LD_VAR 0 6
7173: PPUSH
7174: LD_VAR 0 4
7178: PPUSH
7179: LD_VAR 0 5
7183: PPUSH
7184: LD_VAR 0 3
7188: PUSH
7189: LD_INT 1
7191: PPUSH
7192: LD_VAR 0 3
7196: PPUSH
7197: CALL_OW 12
7201: ARRAY
7202: PPUSH
7203: CALL_OW 185
7207: GO 7161
7209: POP
7210: POP
// end ;
7211: LD_VAR 0 7
7215: RET
// export function EnemyVehicleAttack ( side ) ; var i , tmp , target1 , target2 ; begin
7216: LD_INT 0
7218: PPUSH
7219: PPUSH
7220: PPUSH
7221: PPUSH
7222: PPUSH
// repeat wait ( 0 0$1 ) ;
7223: LD_INT 35
7225: PPUSH
7226: CALL_OW 67
// if FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) > 0 then
7230: LD_INT 22
7232: PUSH
7233: LD_VAR 0 1
7237: PUSH
7238: EMPTY
7239: LIST
7240: LIST
7241: PUSH
7242: LD_INT 21
7244: PUSH
7245: LD_INT 2
7247: PUSH
7248: EMPTY
7249: LIST
7250: LIST
7251: PUSH
7252: EMPTY
7253: LIST
7254: LIST
7255: PPUSH
7256: CALL_OW 69
7260: PUSH
7261: LD_INT 0
7263: GREATER
7264: IFFALSE 7488
// begin for i in FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) do
7266: LD_ADDR_VAR 0 3
7270: PUSH
7271: LD_INT 22
7273: PUSH
7274: LD_VAR 0 1
7278: PUSH
7279: EMPTY
7280: LIST
7281: LIST
7282: PUSH
7283: LD_INT 21
7285: PUSH
7286: LD_INT 2
7288: PUSH
7289: EMPTY
7290: LIST
7291: LIST
7292: PUSH
7293: EMPTY
7294: LIST
7295: LIST
7296: PPUSH
7297: CALL_OW 69
7301: PUSH
7302: FOR_IN
7303: IFFALSE 7486
// begin wait ( 0 0$1 ) ;
7305: LD_INT 35
7307: PPUSH
7308: CALL_OW 67
// target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
7312: LD_ADDR_VAR 0 5
7316: PUSH
7317: LD_INT 81
7319: PUSH
7320: LD_VAR 0 1
7324: PUSH
7325: EMPTY
7326: LIST
7327: LIST
7328: PPUSH
7329: CALL_OW 69
7333: PPUSH
7334: LD_VAR 0 3
7338: PPUSH
7339: CALL_OW 74
7343: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
7344: LD_ADDR_VAR 0 6
7348: PUSH
7349: LD_INT 81
7351: PUSH
7352: LD_VAR 0 1
7356: PUSH
7357: EMPTY
7358: LIST
7359: LIST
7360: PUSH
7361: LD_INT 2
7363: PUSH
7364: LD_INT 59
7366: PUSH
7367: EMPTY
7368: LIST
7369: PUSH
7370: LD_INT 21
7372: PUSH
7373: LD_INT 1
7375: PUSH
7376: EMPTY
7377: LIST
7378: LIST
7379: PUSH
7380: LD_INT 21
7382: PUSH
7383: LD_INT 2
7385: PUSH
7386: EMPTY
7387: LIST
7388: LIST
7389: PUSH
7390: EMPTY
7391: LIST
7392: LIST
7393: LIST
7394: LIST
7395: PUSH
7396: EMPTY
7397: LIST
7398: LIST
7399: PUSH
7400: EMPTY
7401: LIST
7402: PPUSH
7403: CALL_OW 69
7407: PPUSH
7408: LD_VAR 0 3
7412: PPUSH
7413: CALL_OW 74
7417: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
7418: LD_VAR 0 3
7422: PPUSH
7423: LD_VAR 0 5
7427: PPUSH
7428: CALL_OW 296
7432: PUSH
7433: LD_INT 8
7435: PLUS
7436: PUSH
7437: LD_VAR 0 3
7441: PPUSH
7442: LD_VAR 0 6
7446: PPUSH
7447: CALL_OW 296
7451: LESS
7452: IFFALSE 7470
// begin ComAttackUnit ( i , target1 ) ;
7454: LD_VAR 0 3
7458: PPUSH
7459: LD_VAR 0 5
7463: PPUSH
7464: CALL_OW 115
// end else
7468: GO 7484
// begin ComAttackUnit ( i , target2 ) ;
7470: LD_VAR 0 3
7474: PPUSH
7475: LD_VAR 0 6
7479: PPUSH
7480: CALL_OW 115
// end ; end ;
7484: GO 7302
7486: POP
7487: POP
// end ; until FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) = 0 ;
7488: LD_INT 22
7490: PUSH
7491: LD_VAR 0 1
7495: PUSH
7496: EMPTY
7497: LIST
7498: LIST
7499: PUSH
7500: LD_INT 21
7502: PUSH
7503: LD_INT 2
7505: PUSH
7506: EMPTY
7507: LIST
7508: LIST
7509: PUSH
7510: EMPTY
7511: LIST
7512: LIST
7513: PPUSH
7514: CALL_OW 69
7518: PUSH
7519: LD_INT 0
7521: EQUAL
7522: IFFALSE 7223
// end ;
7524: LD_VAR 0 2
7528: RET
// export function RespawnAttackVehicle ( area , side , vehCount , mehskill , nation , vehEngine , vehControl , RUWeapons , ARWeapons , AMWeapon , targetSide ) ; var i , j , un , veh , ruChassisTab , arChassisTab , amChassisTab , vehicleOK_list , target1 , target2 ; begin
7529: LD_INT 0
7531: PPUSH
7532: PPUSH
7533: PPUSH
7534: PPUSH
7535: PPUSH
7536: PPUSH
7537: PPUSH
7538: PPUSH
7539: PPUSH
7540: PPUSH
7541: PPUSH
// amChassisTab = [ ] ;
7542: LD_ADDR_VAR 0 19
7546: PUSH
7547: EMPTY
7548: ST_TO_ADDR
// arChassisTab = [ ] ;
7549: LD_ADDR_VAR 0 18
7553: PUSH
7554: EMPTY
7555: ST_TO_ADDR
// ruChassisTab = [ ] ;
7556: LD_ADDR_VAR 0 17
7560: PUSH
7561: EMPTY
7562: ST_TO_ADDR
// repeat wait ( 0 0$01 ) ;
7563: LD_INT 35
7565: PPUSH
7566: CALL_OW 67
// if nation = 1 then
7570: LD_VAR 0 5
7574: PUSH
7575: LD_INT 1
7577: EQUAL
7578: IFFALSE 8072
// begin uc_side = side ;
7580: LD_ADDR_OWVAR 20
7584: PUSH
7585: LD_VAR 0 2
7589: ST_TO_ADDR
// uc_nation = nation ;
7590: LD_ADDR_OWVAR 21
7594: PUSH
7595: LD_VAR 0 5
7599: ST_TO_ADDR
// vc_engine = vehengine ;
7600: LD_ADDR_OWVAR 39
7604: PUSH
7605: LD_VAR 0 6
7609: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
7610: LD_ADDR_OWVAR 38
7614: PUSH
7615: LD_VAR 0 7
7619: PUSH
7620: LD_INT 1
7622: PPUSH
7623: LD_VAR 0 7
7627: PPUSH
7628: CALL_OW 12
7632: ARRAY
7633: ST_TO_ADDR
// vc_weapon = AMWeapon [ Rand ( 1 , AMWeapon ) ] ;
7634: LD_ADDR_OWVAR 40
7638: PUSH
7639: LD_VAR 0 10
7643: PUSH
7644: LD_INT 1
7646: PPUSH
7647: LD_VAR 0 10
7651: PPUSH
7652: CALL_OW 12
7656: ARRAY
7657: ST_TO_ADDR
// if vc_weapon = 2 or vc_weapon = 3 then
7658: LD_OWVAR 40
7662: PUSH
7663: LD_INT 2
7665: EQUAL
7666: PUSH
7667: LD_OWVAR 40
7671: PUSH
7672: LD_INT 3
7674: EQUAL
7675: OR
7676: IFFALSE 7729
// begin amChassisTab = [ 1 , 2 , 3 , 4 , 5 ] ;
7678: LD_ADDR_VAR 0 19
7682: PUSH
7683: LD_INT 1
7685: PUSH
7686: LD_INT 2
7688: PUSH
7689: LD_INT 3
7691: PUSH
7692: LD_INT 4
7694: PUSH
7695: LD_INT 5
7697: PUSH
7698: EMPTY
7699: LIST
7700: LIST
7701: LIST
7702: LIST
7703: LIST
7704: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7705: LD_ADDR_OWVAR 37
7709: PUSH
7710: LD_VAR 0 19
7714: PUSH
7715: LD_INT 1
7717: PPUSH
7718: LD_VAR 0 19
7722: PPUSH
7723: CALL_OW 12
7727: ARRAY
7728: ST_TO_ADDR
// end ; if vc_weapon = 4 or vc_weapon = 5 or vc_weapon = 9 or vc_weapon = 11 or vc_weapon = 7 then
7729: LD_OWVAR 40
7733: PUSH
7734: LD_INT 4
7736: EQUAL
7737: PUSH
7738: LD_OWVAR 40
7742: PUSH
7743: LD_INT 5
7745: EQUAL
7746: OR
7747: PUSH
7748: LD_OWVAR 40
7752: PUSH
7753: LD_INT 9
7755: EQUAL
7756: OR
7757: PUSH
7758: LD_OWVAR 40
7762: PUSH
7763: LD_INT 11
7765: EQUAL
7766: OR
7767: PUSH
7768: LD_OWVAR 40
7772: PUSH
7773: LD_INT 7
7775: EQUAL
7776: OR
7777: IFFALSE 7826
// begin amChassisTab = [ 2 , 3 , 4 , 5 ] ;
7779: LD_ADDR_VAR 0 19
7783: PUSH
7784: LD_INT 2
7786: PUSH
7787: LD_INT 3
7789: PUSH
7790: LD_INT 4
7792: PUSH
7793: LD_INT 5
7795: PUSH
7796: EMPTY
7797: LIST
7798: LIST
7799: LIST
7800: LIST
7801: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7802: LD_ADDR_OWVAR 37
7806: PUSH
7807: LD_VAR 0 19
7811: PUSH
7812: LD_INT 1
7814: PPUSH
7815: LD_VAR 0 19
7819: PPUSH
7820: CALL_OW 12
7824: ARRAY
7825: ST_TO_ADDR
// end ; if vc_weapon = 8 or vc_weapon = 6 or vc_weapon = 10 then
7826: LD_OWVAR 40
7830: PUSH
7831: LD_INT 8
7833: EQUAL
7834: PUSH
7835: LD_OWVAR 40
7839: PUSH
7840: LD_INT 6
7842: EQUAL
7843: OR
7844: PUSH
7845: LD_OWVAR 40
7849: PUSH
7850: LD_INT 10
7852: EQUAL
7853: OR
7854: IFFALSE 7895
// begin amChassisTab = [ 4 , 5 ] ;
7856: LD_ADDR_VAR 0 19
7860: PUSH
7861: LD_INT 4
7863: PUSH
7864: LD_INT 5
7866: PUSH
7867: EMPTY
7868: LIST
7869: LIST
7870: ST_TO_ADDR
// vc_chassis = amChassisTab [ Rand ( 1 , amChassisTab ) ] ;
7871: LD_ADDR_OWVAR 37
7875: PUSH
7876: LD_VAR 0 19
7880: PUSH
7881: LD_INT 1
7883: PPUSH
7884: LD_VAR 0 19
7888: PPUSH
7889: CALL_OW 12
7893: ARRAY
7894: ST_TO_ADDR
// end ; veh = CreateVehicle ;
7895: LD_ADDR_VAR 0 16
7899: PUSH
7900: CALL_OW 45
7904: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
7905: LD_VAR 0 16
7909: PPUSH
7910: LD_VAR 0 1
7914: PPUSH
7915: LD_INT 0
7917: PPUSH
7918: CALL_OW 49
// if vc_control = 1 then
7922: LD_OWVAR 38
7926: PUSH
7927: LD_INT 1
7929: EQUAL
7930: IFFALSE 8058
// begin hc_gallery =  ;
7932: LD_ADDR_OWVAR 33
7936: PUSH
7937: LD_STRING 
7939: ST_TO_ADDR
// hc_name =  ;
7940: LD_ADDR_OWVAR 26
7944: PUSH
7945: LD_STRING 
7947: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
7948: LD_ADDR_OWVAR 29
7952: PUSH
7953: LD_INT 9
7955: PPUSH
7956: LD_INT 11
7958: PPUSH
7959: CALL_OW 12
7963: PUSH
7964: LD_INT 10
7966: PPUSH
7967: LD_INT 12
7969: PPUSH
7970: CALL_OW 12
7974: PUSH
7975: EMPTY
7976: LIST
7977: LIST
7978: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
7979: LD_ADDR_OWVAR 31
7983: PUSH
7984: LD_VAR 0 4
7988: PUSH
7989: LD_VAR 0 4
7993: PUSH
7994: LD_VAR 0 4
7998: PUSH
7999: LD_VAR 0 4
8003: PUSH
8004: EMPTY
8005: LIST
8006: LIST
8007: LIST
8008: LIST
8009: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8010: LD_ADDR_OWVAR 27
8014: PUSH
8015: LD_INT 1
8017: PPUSH
8018: LD_INT 2
8020: PPUSH
8021: CALL_OW 12
8025: ST_TO_ADDR
// hc_class = 3 ;
8026: LD_ADDR_OWVAR 28
8030: PUSH
8031: LD_INT 3
8033: ST_TO_ADDR
// un = CreateHuman ;
8034: LD_ADDR_VAR 0 15
8038: PUSH
8039: CALL_OW 44
8043: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8044: LD_VAR 0 15
8048: PPUSH
8049: LD_VAR 0 16
8053: PPUSH
8054: CALL_OW 52
// end ; i = i + 1 ;
8058: LD_ADDR_VAR 0 13
8062: PUSH
8063: LD_VAR 0 13
8067: PUSH
8068: LD_INT 1
8070: PLUS
8071: ST_TO_ADDR
// end ; if nation = 2 then
8072: LD_VAR 0 5
8076: PUSH
8077: LD_INT 2
8079: EQUAL
8080: IFFALSE 8497
// begin uc_side = side ;
8082: LD_ADDR_OWVAR 20
8086: PUSH
8087: LD_VAR 0 2
8091: ST_TO_ADDR
// uc_nation = nation ;
8092: LD_ADDR_OWVAR 21
8096: PUSH
8097: LD_VAR 0 5
8101: ST_TO_ADDR
// vc_engine = vehengine ;
8102: LD_ADDR_OWVAR 39
8106: PUSH
8107: LD_VAR 0 6
8111: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
8112: LD_ADDR_OWVAR 38
8116: PUSH
8117: LD_VAR 0 7
8121: PUSH
8122: LD_INT 1
8124: PPUSH
8125: LD_VAR 0 7
8129: PPUSH
8130: CALL_OW 12
8134: ARRAY
8135: ST_TO_ADDR
// vc_weapon = ARWeapons [ Rand ( 1 , ARWeapons ) ] ;
8136: LD_ADDR_OWVAR 40
8140: PUSH
8141: LD_VAR 0 9
8145: PUSH
8146: LD_INT 1
8148: PPUSH
8149: LD_VAR 0 9
8153: PPUSH
8154: CALL_OW 12
8158: ARRAY
8159: ST_TO_ADDR
// if vc_weapon = 24 or vc_weapon = 22 or vc_weapon = 23 or vc_weapon = 30 then
8160: LD_OWVAR 40
8164: PUSH
8165: LD_INT 24
8167: EQUAL
8168: PUSH
8169: LD_OWVAR 40
8173: PUSH
8174: LD_INT 22
8176: EQUAL
8177: OR
8178: PUSH
8179: LD_OWVAR 40
8183: PUSH
8184: LD_INT 23
8186: EQUAL
8187: OR
8188: PUSH
8189: LD_OWVAR 40
8193: PUSH
8194: LD_INT 30
8196: EQUAL
8197: OR
8198: IFFALSE 8235
// begin arChassisTab = [ 14 ] ;
8200: LD_ADDR_VAR 0 18
8204: PUSH
8205: LD_INT 14
8207: PUSH
8208: EMPTY
8209: LIST
8210: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
8211: LD_ADDR_OWVAR 37
8215: PUSH
8216: LD_VAR 0 18
8220: PUSH
8221: LD_INT 1
8223: PPUSH
8224: LD_VAR 0 18
8228: PPUSH
8229: CALL_OW 12
8233: ARRAY
8234: ST_TO_ADDR
// end ; if vc_weapon = 29 or vc_weapon = 28 or vc_weapon = 27 or vc_weapon = 26 or vc_weapon = 25 then
8235: LD_OWVAR 40
8239: PUSH
8240: LD_INT 29
8242: EQUAL
8243: PUSH
8244: LD_OWVAR 40
8248: PUSH
8249: LD_INT 28
8251: EQUAL
8252: OR
8253: PUSH
8254: LD_OWVAR 40
8258: PUSH
8259: LD_INT 27
8261: EQUAL
8262: OR
8263: PUSH
8264: LD_OWVAR 40
8268: PUSH
8269: LD_INT 26
8271: EQUAL
8272: OR
8273: PUSH
8274: LD_OWVAR 40
8278: PUSH
8279: LD_INT 25
8281: EQUAL
8282: OR
8283: IFFALSE 8320
// begin arChassisTab = [ 14 ] ;
8285: LD_ADDR_VAR 0 18
8289: PUSH
8290: LD_INT 14
8292: PUSH
8293: EMPTY
8294: LIST
8295: ST_TO_ADDR
// vc_chassis = arChassisTab [ Rand ( 1 , arChassisTab ) ] ;
8296: LD_ADDR_OWVAR 37
8300: PUSH
8301: LD_VAR 0 18
8305: PUSH
8306: LD_INT 1
8308: PPUSH
8309: LD_VAR 0 18
8313: PPUSH
8314: CALL_OW 12
8318: ARRAY
8319: ST_TO_ADDR
// end ; veh = CreateVehicle ;
8320: LD_ADDR_VAR 0 16
8324: PUSH
8325: CALL_OW 45
8329: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
8330: LD_VAR 0 16
8334: PPUSH
8335: LD_VAR 0 1
8339: PPUSH
8340: LD_INT 0
8342: PPUSH
8343: CALL_OW 49
// if vc_control = 1 then
8347: LD_OWVAR 38
8351: PUSH
8352: LD_INT 1
8354: EQUAL
8355: IFFALSE 8483
// begin hc_gallery =  ;
8357: LD_ADDR_OWVAR 33
8361: PUSH
8362: LD_STRING 
8364: ST_TO_ADDR
// hc_name =  ;
8365: LD_ADDR_OWVAR 26
8369: PUSH
8370: LD_STRING 
8372: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8373: LD_ADDR_OWVAR 29
8377: PUSH
8378: LD_INT 9
8380: PPUSH
8381: LD_INT 11
8383: PPUSH
8384: CALL_OW 12
8388: PUSH
8389: LD_INT 10
8391: PPUSH
8392: LD_INT 12
8394: PPUSH
8395: CALL_OW 12
8399: PUSH
8400: EMPTY
8401: LIST
8402: LIST
8403: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
8404: LD_ADDR_OWVAR 31
8408: PUSH
8409: LD_VAR 0 4
8413: PUSH
8414: LD_VAR 0 4
8418: PUSH
8419: LD_VAR 0 4
8423: PUSH
8424: LD_VAR 0 4
8428: PUSH
8429: EMPTY
8430: LIST
8431: LIST
8432: LIST
8433: LIST
8434: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8435: LD_ADDR_OWVAR 27
8439: PUSH
8440: LD_INT 1
8442: PPUSH
8443: LD_INT 2
8445: PPUSH
8446: CALL_OW 12
8450: ST_TO_ADDR
// hc_class = 3 ;
8451: LD_ADDR_OWVAR 28
8455: PUSH
8456: LD_INT 3
8458: ST_TO_ADDR
// un = CreateHuman ;
8459: LD_ADDR_VAR 0 15
8463: PUSH
8464: CALL_OW 44
8468: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8469: LD_VAR 0 15
8473: PPUSH
8474: LD_VAR 0 16
8478: PPUSH
8479: CALL_OW 52
// end ; i = i + 1 ;
8483: LD_ADDR_VAR 0 13
8487: PUSH
8488: LD_VAR 0 13
8492: PUSH
8493: LD_INT 1
8495: PLUS
8496: ST_TO_ADDR
// end ; if nation = 3 then
8497: LD_VAR 0 5
8501: PUSH
8502: LD_INT 3
8504: EQUAL
8505: IFFALSE 8918
// begin uc_side = side ;
8507: LD_ADDR_OWVAR 20
8511: PUSH
8512: LD_VAR 0 2
8516: ST_TO_ADDR
// uc_nation = nation ;
8517: LD_ADDR_OWVAR 21
8521: PUSH
8522: LD_VAR 0 5
8526: ST_TO_ADDR
// vc_engine = vehengine ;
8527: LD_ADDR_OWVAR 39
8531: PUSH
8532: LD_VAR 0 6
8536: ST_TO_ADDR
// vc_control = vehControl [ Rand ( 1 , vehControl ) ] ;
8537: LD_ADDR_OWVAR 38
8541: PUSH
8542: LD_VAR 0 7
8546: PUSH
8547: LD_INT 1
8549: PPUSH
8550: LD_VAR 0 7
8554: PPUSH
8555: CALL_OW 12
8559: ARRAY
8560: ST_TO_ADDR
// vc_weapon = RUWeapons [ Rand ( 1 , RUWeapons ) ] ;
8561: LD_ADDR_OWVAR 40
8565: PUSH
8566: LD_VAR 0 8
8570: PUSH
8571: LD_INT 1
8573: PPUSH
8574: LD_VAR 0 8
8578: PPUSH
8579: CALL_OW 12
8583: ARRAY
8584: ST_TO_ADDR
// if vc_weapon = 42 or vc_weapon = 43 or vc_weapon = 44 or vc_weapon = 45 or vc_weapon = 49 then
8585: LD_OWVAR 40
8589: PUSH
8590: LD_INT 42
8592: EQUAL
8593: PUSH
8594: LD_OWVAR 40
8598: PUSH
8599: LD_INT 43
8601: EQUAL
8602: OR
8603: PUSH
8604: LD_OWVAR 40
8608: PUSH
8609: LD_INT 44
8611: EQUAL
8612: OR
8613: PUSH
8614: LD_OWVAR 40
8618: PUSH
8619: LD_INT 45
8621: EQUAL
8622: OR
8623: PUSH
8624: LD_OWVAR 40
8628: PUSH
8629: LD_INT 49
8631: EQUAL
8632: OR
8633: IFFALSE 8682
// begin ruChassisTab = [ 21 , 22 , 23 , 24 ] ;
8635: LD_ADDR_VAR 0 17
8639: PUSH
8640: LD_INT 21
8642: PUSH
8643: LD_INT 22
8645: PUSH
8646: LD_INT 23
8648: PUSH
8649: LD_INT 24
8651: PUSH
8652: EMPTY
8653: LIST
8654: LIST
8655: LIST
8656: LIST
8657: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
8658: LD_ADDR_OWVAR 37
8662: PUSH
8663: LD_VAR 0 17
8667: PUSH
8668: LD_INT 1
8670: PPUSH
8671: LD_VAR 0 17
8675: PPUSH
8676: CALL_OW 12
8680: ARRAY
8681: ST_TO_ADDR
// end ; if vc_weapon = 46 or vc_weapon = 47 then
8682: LD_OWVAR 40
8686: PUSH
8687: LD_INT 46
8689: EQUAL
8690: PUSH
8691: LD_OWVAR 40
8695: PUSH
8696: LD_INT 47
8698: EQUAL
8699: OR
8700: IFFALSE 8741
// begin ruChassisTab = [ 23 , 24 ] ;
8702: LD_ADDR_VAR 0 17
8706: PUSH
8707: LD_INT 23
8709: PUSH
8710: LD_INT 24
8712: PUSH
8713: EMPTY
8714: LIST
8715: LIST
8716: ST_TO_ADDR
// vc_chassis = ruChassisTab [ Rand ( 1 , ruChassisTab ) ] ;
8717: LD_ADDR_OWVAR 37
8721: PUSH
8722: LD_VAR 0 17
8726: PUSH
8727: LD_INT 1
8729: PPUSH
8730: LD_VAR 0 17
8734: PPUSH
8735: CALL_OW 12
8739: ARRAY
8740: ST_TO_ADDR
// end ; veh = CreateVehicle ;
8741: LD_ADDR_VAR 0 16
8745: PUSH
8746: CALL_OW 45
8750: ST_TO_ADDR
// PlaceUnitArea ( veh , area , false ) ;
8751: LD_VAR 0 16
8755: PPUSH
8756: LD_VAR 0 1
8760: PPUSH
8761: LD_INT 0
8763: PPUSH
8764: CALL_OW 49
// if vc_control = 1 then
8768: LD_OWVAR 38
8772: PUSH
8773: LD_INT 1
8775: EQUAL
8776: IFFALSE 8904
// begin hc_gallery =  ;
8778: LD_ADDR_OWVAR 33
8782: PUSH
8783: LD_STRING 
8785: ST_TO_ADDR
// hc_name =  ;
8786: LD_ADDR_OWVAR 26
8790: PUSH
8791: LD_STRING 
8793: ST_TO_ADDR
// hc_attr = [ Rand ( 9 , 11 ) , Rand ( 10 , 12 ) ] ;
8794: LD_ADDR_OWVAR 29
8798: PUSH
8799: LD_INT 9
8801: PPUSH
8802: LD_INT 11
8804: PPUSH
8805: CALL_OW 12
8809: PUSH
8810: LD_INT 10
8812: PPUSH
8813: LD_INT 12
8815: PPUSH
8816: CALL_OW 12
8820: PUSH
8821: EMPTY
8822: LIST
8823: LIST
8824: ST_TO_ADDR
// hc_skills = [ mehskill , mehskill , mehskill , mehskill ] ;
8825: LD_ADDR_OWVAR 31
8829: PUSH
8830: LD_VAR 0 4
8834: PUSH
8835: LD_VAR 0 4
8839: PUSH
8840: LD_VAR 0 4
8844: PUSH
8845: LD_VAR 0 4
8849: PUSH
8850: EMPTY
8851: LIST
8852: LIST
8853: LIST
8854: LIST
8855: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
8856: LD_ADDR_OWVAR 27
8860: PUSH
8861: LD_INT 1
8863: PPUSH
8864: LD_INT 2
8866: PPUSH
8867: CALL_OW 12
8871: ST_TO_ADDR
// hc_class = 3 ;
8872: LD_ADDR_OWVAR 28
8876: PUSH
8877: LD_INT 3
8879: ST_TO_ADDR
// un = CreateHuman ;
8880: LD_ADDR_VAR 0 15
8884: PUSH
8885: CALL_OW 44
8889: ST_TO_ADDR
// PlaceHumanInUnit ( un , veh ) ;
8890: LD_VAR 0 15
8894: PPUSH
8895: LD_VAR 0 16
8899: PPUSH
8900: CALL_OW 52
// end ; i = i + 1 ;
8904: LD_ADDR_VAR 0 13
8908: PUSH
8909: LD_VAR 0 13
8913: PUSH
8914: LD_INT 1
8916: PLUS
8917: ST_TO_ADDR
// end ; until i = vehCount ;
8918: LD_VAR 0 13
8922: PUSH
8923: LD_VAR 0 3
8927: EQUAL
8928: IFFALSE 7563
// repeat wait ( 0 0$1 ) ;
8930: LD_INT 35
8932: PPUSH
8933: CALL_OW 67
// vehicleOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] , [ f_lives , 650 ] ] ) ;
8937: LD_ADDR_VAR 0 20
8941: PUSH
8942: LD_INT 22
8944: PUSH
8945: LD_VAR 0 2
8949: PUSH
8950: EMPTY
8951: LIST
8952: LIST
8953: PUSH
8954: LD_INT 21
8956: PUSH
8957: LD_INT 2
8959: PUSH
8960: EMPTY
8961: LIST
8962: LIST
8963: PUSH
8964: LD_INT 24
8966: PUSH
8967: LD_INT 650
8969: PUSH
8970: EMPTY
8971: LIST
8972: LIST
8973: PUSH
8974: EMPTY
8975: LIST
8976: LIST
8977: LIST
8978: PPUSH
8979: CALL_OW 69
8983: ST_TO_ADDR
// if vehicleOK_list > 0 then
8984: LD_VAR 0 20
8988: PUSH
8989: LD_INT 0
8991: GREATER
8992: IFFALSE 9183
// begin for i in vehicleOK_list do
8994: LD_ADDR_VAR 0 13
8998: PUSH
8999: LD_VAR 0 20
9003: PUSH
9004: FOR_IN
9005: IFFALSE 9181
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
9007: LD_ADDR_VAR 0 21
9011: PUSH
9012: LD_INT 81
9014: PUSH
9015: LD_VAR 0 2
9019: PUSH
9020: EMPTY
9021: LIST
9022: LIST
9023: PPUSH
9024: CALL_OW 69
9028: PPUSH
9029: LD_VAR 0 13
9033: PPUSH
9034: CALL_OW 74
9038: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
9039: LD_ADDR_VAR 0 22
9043: PUSH
9044: LD_INT 81
9046: PUSH
9047: LD_VAR 0 2
9051: PUSH
9052: EMPTY
9053: LIST
9054: LIST
9055: PUSH
9056: LD_INT 2
9058: PUSH
9059: LD_INT 59
9061: PUSH
9062: EMPTY
9063: LIST
9064: PUSH
9065: LD_INT 21
9067: PUSH
9068: LD_INT 1
9070: PUSH
9071: EMPTY
9072: LIST
9073: LIST
9074: PUSH
9075: LD_INT 21
9077: PUSH
9078: LD_INT 2
9080: PUSH
9081: EMPTY
9082: LIST
9083: LIST
9084: PUSH
9085: EMPTY
9086: LIST
9087: LIST
9088: LIST
9089: LIST
9090: PUSH
9091: EMPTY
9092: LIST
9093: LIST
9094: PUSH
9095: EMPTY
9096: LIST
9097: PPUSH
9098: CALL_OW 69
9102: PPUSH
9103: LD_VAR 0 13
9107: PPUSH
9108: CALL_OW 74
9112: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
9113: LD_VAR 0 13
9117: PPUSH
9118: LD_VAR 0 21
9122: PPUSH
9123: CALL_OW 296
9127: PUSH
9128: LD_INT 8
9130: PLUS
9131: PUSH
9132: LD_VAR 0 13
9136: PPUSH
9137: LD_VAR 0 22
9141: PPUSH
9142: CALL_OW 296
9146: LESS
9147: IFFALSE 9165
// begin ComAttackUnit ( i , target1 ) ;
9149: LD_VAR 0 13
9153: PPUSH
9154: LD_VAR 0 21
9158: PPUSH
9159: CALL_OW 115
// end else
9163: GO 9179
// begin ComAttackUnit ( i , target2 ) ;
9165: LD_VAR 0 13
9169: PPUSH
9170: LD_VAR 0 22
9174: PPUSH
9175: CALL_OW 115
// end ; end ;
9179: GO 9004
9181: POP
9182: POP
// end ; until ( FilterAllUnits ( [ [ f_side , side ] , [ f_type , unit_vehicle ] ] ) ) = 0 ;
9183: LD_INT 22
9185: PUSH
9186: LD_VAR 0 2
9190: PUSH
9191: EMPTY
9192: LIST
9193: LIST
9194: PUSH
9195: LD_INT 21
9197: PUSH
9198: LD_INT 2
9200: PUSH
9201: EMPTY
9202: LIST
9203: LIST
9204: PUSH
9205: EMPTY
9206: LIST
9207: LIST
9208: PPUSH
9209: CALL_OW 69
9213: PUSH
9214: LD_INT 0
9216: EQUAL
9217: IFFALSE 8930
// end ;
9219: LD_VAR 0 12
9223: RET
// export function RespawnAttackInfantry ( side , nation , soldierCount , sniperCount , bazookCount , mortalCount , medicCount , skil , spawnArea , healArea , targetSide ) ; var i , j , un , damageUnit_list , medic_list , soldiersOK_list , enemyUnits , und , target1 , target2 ; begin
9224: LD_INT 0
9226: PPUSH
9227: PPUSH
9228: PPUSH
9229: PPUSH
9230: PPUSH
9231: PPUSH
9232: PPUSH
9233: PPUSH
9234: PPUSH
9235: PPUSH
9236: PPUSH
// for i = 1 to soldierCount do
9237: LD_ADDR_VAR 0 13
9241: PUSH
9242: DOUBLE
9243: LD_INT 1
9245: DEC
9246: ST_TO_ADDR
9247: LD_VAR 0 3
9251: PUSH
9252: FOR_TO
9253: IFFALSE 9390
// begin uc_side = side ;
9255: LD_ADDR_OWVAR 20
9259: PUSH
9260: LD_VAR 0 1
9264: ST_TO_ADDR
// uc_nation = nation ;
9265: LD_ADDR_OWVAR 21
9269: PUSH
9270: LD_VAR 0 2
9274: ST_TO_ADDR
// hc_gallery =  ;
9275: LD_ADDR_OWVAR 33
9279: PUSH
9280: LD_STRING 
9282: ST_TO_ADDR
// hc_name =  ;
9283: LD_ADDR_OWVAR 26
9287: PUSH
9288: LD_STRING 
9290: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9291: LD_ADDR_OWVAR 29
9295: PUSH
9296: LD_INT 10
9298: PUSH
9299: LD_INT 10
9301: PUSH
9302: EMPTY
9303: LIST
9304: LIST
9305: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9306: LD_ADDR_OWVAR 31
9310: PUSH
9311: LD_VAR 0 8
9315: PUSH
9316: LD_VAR 0 8
9320: PUSH
9321: LD_VAR 0 8
9325: PUSH
9326: LD_VAR 0 8
9330: PUSH
9331: EMPTY
9332: LIST
9333: LIST
9334: LIST
9335: LIST
9336: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9337: LD_ADDR_OWVAR 27
9341: PUSH
9342: LD_INT 1
9344: PPUSH
9345: LD_INT 2
9347: PPUSH
9348: CALL_OW 12
9352: ST_TO_ADDR
// hc_class = 1 ;
9353: LD_ADDR_OWVAR 28
9357: PUSH
9358: LD_INT 1
9360: ST_TO_ADDR
// un = CreateHuman ;
9361: LD_ADDR_VAR 0 15
9365: PUSH
9366: CALL_OW 44
9370: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9371: LD_VAR 0 15
9375: PPUSH
9376: LD_VAR 0 9
9380: PPUSH
9381: LD_INT 0
9383: PPUSH
9384: CALL_OW 49
// end ;
9388: GO 9252
9390: POP
9391: POP
// for i = 1 to sniperCount do
9392: LD_ADDR_VAR 0 13
9396: PUSH
9397: DOUBLE
9398: LD_INT 1
9400: DEC
9401: ST_TO_ADDR
9402: LD_VAR 0 4
9406: PUSH
9407: FOR_TO
9408: IFFALSE 9545
// begin uc_side = side ;
9410: LD_ADDR_OWVAR 20
9414: PUSH
9415: LD_VAR 0 1
9419: ST_TO_ADDR
// uc_nation = nation ;
9420: LD_ADDR_OWVAR 21
9424: PUSH
9425: LD_VAR 0 2
9429: ST_TO_ADDR
// hc_gallery =  ;
9430: LD_ADDR_OWVAR 33
9434: PUSH
9435: LD_STRING 
9437: ST_TO_ADDR
// hc_name =  ;
9438: LD_ADDR_OWVAR 26
9442: PUSH
9443: LD_STRING 
9445: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9446: LD_ADDR_OWVAR 29
9450: PUSH
9451: LD_INT 10
9453: PUSH
9454: LD_INT 10
9456: PUSH
9457: EMPTY
9458: LIST
9459: LIST
9460: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9461: LD_ADDR_OWVAR 31
9465: PUSH
9466: LD_VAR 0 8
9470: PUSH
9471: LD_VAR 0 8
9475: PUSH
9476: LD_VAR 0 8
9480: PUSH
9481: LD_VAR 0 8
9485: PUSH
9486: EMPTY
9487: LIST
9488: LIST
9489: LIST
9490: LIST
9491: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9492: LD_ADDR_OWVAR 27
9496: PUSH
9497: LD_INT 1
9499: PPUSH
9500: LD_INT 2
9502: PPUSH
9503: CALL_OW 12
9507: ST_TO_ADDR
// hc_class = 5 ;
9508: LD_ADDR_OWVAR 28
9512: PUSH
9513: LD_INT 5
9515: ST_TO_ADDR
// un = CreateHuman ;
9516: LD_ADDR_VAR 0 15
9520: PUSH
9521: CALL_OW 44
9525: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9526: LD_VAR 0 15
9530: PPUSH
9531: LD_VAR 0 9
9535: PPUSH
9536: LD_INT 0
9538: PPUSH
9539: CALL_OW 49
// end ;
9543: GO 9407
9545: POP
9546: POP
// for i = 1 to bazookCount do
9547: LD_ADDR_VAR 0 13
9551: PUSH
9552: DOUBLE
9553: LD_INT 1
9555: DEC
9556: ST_TO_ADDR
9557: LD_VAR 0 5
9561: PUSH
9562: FOR_TO
9563: IFFALSE 9700
// begin uc_side = side ;
9565: LD_ADDR_OWVAR 20
9569: PUSH
9570: LD_VAR 0 1
9574: ST_TO_ADDR
// uc_nation = nation ;
9575: LD_ADDR_OWVAR 21
9579: PUSH
9580: LD_VAR 0 2
9584: ST_TO_ADDR
// hc_gallery =  ;
9585: LD_ADDR_OWVAR 33
9589: PUSH
9590: LD_STRING 
9592: ST_TO_ADDR
// hc_name =  ;
9593: LD_ADDR_OWVAR 26
9597: PUSH
9598: LD_STRING 
9600: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9601: LD_ADDR_OWVAR 29
9605: PUSH
9606: LD_INT 10
9608: PUSH
9609: LD_INT 10
9611: PUSH
9612: EMPTY
9613: LIST
9614: LIST
9615: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9616: LD_ADDR_OWVAR 31
9620: PUSH
9621: LD_VAR 0 8
9625: PUSH
9626: LD_VAR 0 8
9630: PUSH
9631: LD_VAR 0 8
9635: PUSH
9636: LD_VAR 0 8
9640: PUSH
9641: EMPTY
9642: LIST
9643: LIST
9644: LIST
9645: LIST
9646: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9647: LD_ADDR_OWVAR 27
9651: PUSH
9652: LD_INT 1
9654: PPUSH
9655: LD_INT 2
9657: PPUSH
9658: CALL_OW 12
9662: ST_TO_ADDR
// hc_class = 9 ;
9663: LD_ADDR_OWVAR 28
9667: PUSH
9668: LD_INT 9
9670: ST_TO_ADDR
// un = CreateHuman ;
9671: LD_ADDR_VAR 0 15
9675: PUSH
9676: CALL_OW 44
9680: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9681: LD_VAR 0 15
9685: PPUSH
9686: LD_VAR 0 9
9690: PPUSH
9691: LD_INT 0
9693: PPUSH
9694: CALL_OW 49
// end ;
9698: GO 9562
9700: POP
9701: POP
// for i = 1 to mortalCount do
9702: LD_ADDR_VAR 0 13
9706: PUSH
9707: DOUBLE
9708: LD_INT 1
9710: DEC
9711: ST_TO_ADDR
9712: LD_VAR 0 6
9716: PUSH
9717: FOR_TO
9718: IFFALSE 9855
// begin uc_side = side ;
9720: LD_ADDR_OWVAR 20
9724: PUSH
9725: LD_VAR 0 1
9729: ST_TO_ADDR
// uc_nation = nation ;
9730: LD_ADDR_OWVAR 21
9734: PUSH
9735: LD_VAR 0 2
9739: ST_TO_ADDR
// hc_gallery =  ;
9740: LD_ADDR_OWVAR 33
9744: PUSH
9745: LD_STRING 
9747: ST_TO_ADDR
// hc_name =  ;
9748: LD_ADDR_OWVAR 26
9752: PUSH
9753: LD_STRING 
9755: ST_TO_ADDR
// hc_attr = [ 10 , 10 ] ;
9756: LD_ADDR_OWVAR 29
9760: PUSH
9761: LD_INT 10
9763: PUSH
9764: LD_INT 10
9766: PUSH
9767: EMPTY
9768: LIST
9769: LIST
9770: ST_TO_ADDR
// hc_skills = [ skil , skil , skil , skil ] ;
9771: LD_ADDR_OWVAR 31
9775: PUSH
9776: LD_VAR 0 8
9780: PUSH
9781: LD_VAR 0 8
9785: PUSH
9786: LD_VAR 0 8
9790: PUSH
9791: LD_VAR 0 8
9795: PUSH
9796: EMPTY
9797: LIST
9798: LIST
9799: LIST
9800: LIST
9801: ST_TO_ADDR
// hc_sex = Rand ( sex_male , sex_female ) ;
9802: LD_ADDR_OWVAR 27
9806: PUSH
9807: LD_INT 1
9809: PPUSH
9810: LD_INT 2
9812: PPUSH
9813: CALL_OW 12
9817: ST_TO_ADDR
// hc_class = 8 ;
9818: LD_ADDR_OWVAR 28
9822: PUSH
9823: LD_INT 8
9825: ST_TO_ADDR
// un = CreateHuman ;
9826: LD_ADDR_VAR 0 15
9830: PUSH
9831: CALL_OW 44
9835: ST_TO_ADDR
// PlaceUnitArea ( un , spawnArea , false ) ;
9836: LD_VAR 0 15
9840: PPUSH
9841: LD_VAR 0 9
9845: PPUSH
9846: LD_INT 0
9848: PPUSH
9849: CALL_OW 49
// end ;
9853: GO 9717
9855: POP
9856: POP
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] ] ) ;
9857: LD_ADDR_VAR 0 18
9861: PUSH
9862: LD_INT 22
9864: PUSH
9865: LD_VAR 0 1
9869: PUSH
9870: EMPTY
9871: LIST
9872: LIST
9873: PUSH
9874: LD_INT 2
9876: PUSH
9877: LD_INT 25
9879: PUSH
9880: LD_INT 1
9882: PUSH
9883: EMPTY
9884: LIST
9885: LIST
9886: PUSH
9887: LD_INT 25
9889: PUSH
9890: LD_INT 5
9892: PUSH
9893: EMPTY
9894: LIST
9895: LIST
9896: PUSH
9897: LD_INT 25
9899: PUSH
9900: LD_INT 8
9902: PUSH
9903: EMPTY
9904: LIST
9905: LIST
9906: PUSH
9907: LD_INT 25
9909: PUSH
9910: LD_INT 9
9912: PUSH
9913: EMPTY
9914: LIST
9915: LIST
9916: PUSH
9917: EMPTY
9918: LIST
9919: LIST
9920: LIST
9921: LIST
9922: LIST
9923: PUSH
9924: EMPTY
9925: LIST
9926: LIST
9927: PPUSH
9928: CALL_OW 69
9932: ST_TO_ADDR
// medic_list = FilterAllUnits ( [ [ f_side , side ] , [ f_class , 4 ] ] ) ;
9933: LD_ADDR_VAR 0 17
9937: PUSH
9938: LD_INT 22
9940: PUSH
9941: LD_VAR 0 1
9945: PUSH
9946: EMPTY
9947: LIST
9948: LIST
9949: PUSH
9950: LD_INT 25
9952: PUSH
9953: LD_INT 4
9955: PUSH
9956: EMPTY
9957: LIST
9958: LIST
9959: PUSH
9960: EMPTY
9961: LIST
9962: LIST
9963: PPUSH
9964: CALL_OW 69
9968: ST_TO_ADDR
// for i in medic_list do
9969: LD_ADDR_VAR 0 13
9973: PUSH
9974: LD_VAR 0 17
9978: PUSH
9979: FOR_IN
9980: IFFALSE 9998
// ComMoveToArea ( i , healArea ) ;
9982: LD_VAR 0 13
9986: PPUSH
9987: LD_VAR 0 10
9991: PPUSH
9992: CALL_OW 113
9996: GO 9979
9998: POP
9999: POP
// repeat wait ( 0 0$1 ) ;
10000: LD_INT 35
10002: PPUSH
10003: CALL_OW 67
// damageUnit_list = FilterAllUnits ( [ [ f_side , side ] , [ f_and , [ f_not , [ f_lives , 550 ] ] , [ f_lives , 250 ] ] ] ) ;
10007: LD_ADDR_VAR 0 16
10011: PUSH
10012: LD_INT 22
10014: PUSH
10015: LD_VAR 0 1
10019: PUSH
10020: EMPTY
10021: LIST
10022: LIST
10023: PUSH
10024: LD_INT 1
10026: PUSH
10027: LD_INT 3
10029: PUSH
10030: LD_INT 24
10032: PUSH
10033: LD_INT 550
10035: PUSH
10036: EMPTY
10037: LIST
10038: LIST
10039: PUSH
10040: EMPTY
10041: LIST
10042: LIST
10043: PUSH
10044: LD_INT 24
10046: PUSH
10047: LD_INT 250
10049: PUSH
10050: EMPTY
10051: LIST
10052: LIST
10053: PUSH
10054: EMPTY
10055: LIST
10056: LIST
10057: LIST
10058: PUSH
10059: EMPTY
10060: LIST
10061: LIST
10062: PPUSH
10063: CALL_OW 69
10067: ST_TO_ADDR
// soldiersOK_list = FilterAllUnits ( [ [ f_side , side ] , [ f_or , [ f_class , 1 ] , [ f_class , 5 ] , [ f_class , 8 ] , [ f_class , 9 ] ] , [ f_lives , 1000 ] ] ) ;
10068: LD_ADDR_VAR 0 18
10072: PUSH
10073: LD_INT 22
10075: PUSH
10076: LD_VAR 0 1
10080: PUSH
10081: EMPTY
10082: LIST
10083: LIST
10084: PUSH
10085: LD_INT 2
10087: PUSH
10088: LD_INT 25
10090: PUSH
10091: LD_INT 1
10093: PUSH
10094: EMPTY
10095: LIST
10096: LIST
10097: PUSH
10098: LD_INT 25
10100: PUSH
10101: LD_INT 5
10103: PUSH
10104: EMPTY
10105: LIST
10106: LIST
10107: PUSH
10108: LD_INT 25
10110: PUSH
10111: LD_INT 8
10113: PUSH
10114: EMPTY
10115: LIST
10116: LIST
10117: PUSH
10118: LD_INT 25
10120: PUSH
10121: LD_INT 9
10123: PUSH
10124: EMPTY
10125: LIST
10126: LIST
10127: PUSH
10128: EMPTY
10129: LIST
10130: LIST
10131: LIST
10132: LIST
10133: LIST
10134: PUSH
10135: LD_INT 24
10137: PUSH
10138: LD_INT 1000
10140: PUSH
10141: EMPTY
10142: LIST
10143: LIST
10144: PUSH
10145: EMPTY
10146: LIST
10147: LIST
10148: LIST
10149: PPUSH
10150: CALL_OW 69
10154: ST_TO_ADDR
// for i in soldiersOK_list do
10155: LD_ADDR_VAR 0 13
10159: PUSH
10160: LD_VAR 0 18
10164: PUSH
10165: FOR_IN
10166: IFFALSE 10342
// begin target1 := NearestUnitToUnit ( FilterAllUnits ( [ f_enemy , Side ] ) , i ) ;
10168: LD_ADDR_VAR 0 21
10172: PUSH
10173: LD_INT 81
10175: PUSH
10176: LD_VAR 0 1
10180: PUSH
10181: EMPTY
10182: LIST
10183: LIST
10184: PPUSH
10185: CALL_OW 69
10189: PPUSH
10190: LD_VAR 0 13
10194: PPUSH
10195: CALL_OW 74
10199: ST_TO_ADDR
// target2 := NearestUnitToUnit ( FilterAllUnits ( [ [ [ f_enemy , Side ] , [ f_or , [ f_occupied ] , [ f_type , unit_human ] , [ f_type , unit_vehicle ] ] ] ] ) , i ) ;
10200: LD_ADDR_VAR 0 22
10204: PUSH
10205: LD_INT 81
10207: PUSH
10208: LD_VAR 0 1
10212: PUSH
10213: EMPTY
10214: LIST
10215: LIST
10216: PUSH
10217: LD_INT 2
10219: PUSH
10220: LD_INT 59
10222: PUSH
10223: EMPTY
10224: LIST
10225: PUSH
10226: LD_INT 21
10228: PUSH
10229: LD_INT 1
10231: PUSH
10232: EMPTY
10233: LIST
10234: LIST
10235: PUSH
10236: LD_INT 21
10238: PUSH
10239: LD_INT 2
10241: PUSH
10242: EMPTY
10243: LIST
10244: LIST
10245: PUSH
10246: EMPTY
10247: LIST
10248: LIST
10249: LIST
10250: LIST
10251: PUSH
10252: EMPTY
10253: LIST
10254: LIST
10255: PUSH
10256: EMPTY
10257: LIST
10258: PPUSH
10259: CALL_OW 69
10263: PPUSH
10264: LD_VAR 0 13
10268: PPUSH
10269: CALL_OW 74
10273: ST_TO_ADDR
// if GetDistUnits ( i , target1 ) + 8 < GetDistUnits ( i , target2 ) then
10274: LD_VAR 0 13
10278: PPUSH
10279: LD_VAR 0 21
10283: PPUSH
10284: CALL_OW 296
10288: PUSH
10289: LD_INT 8
10291: PLUS
10292: PUSH
10293: LD_VAR 0 13
10297: PPUSH
10298: LD_VAR 0 22
10302: PPUSH
10303: CALL_OW 296
10307: LESS
10308: IFFALSE 10326
// begin ComAttackUnit ( i , target1 ) ;
10310: LD_VAR 0 13
10314: PPUSH
10315: LD_VAR 0 21
10319: PPUSH
10320: CALL_OW 115
// end else
10324: GO 10340
// begin ComAttackUnit ( i , target2 ) ;
10326: LD_VAR 0 13
10330: PPUSH
10331: LD_VAR 0 22
10335: PPUSH
10336: CALL_OW 115
// end ; end ;
10340: GO 10165
10342: POP
10343: POP
// until soldiersOK_list = [ ] ;
10344: LD_VAR 0 18
10348: PUSH
10349: EMPTY
10350: EQUAL
10351: IFFALSE 10000
// end ; end_of_file
10353: LD_VAR 0 12
10357: RET
// on BuildingStarted ( b , u ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
10358: LD_VAR 0 1
10362: PPUSH
10363: CALL_OW 266
10367: PUSH
10368: LD_INT 0
10370: PUSH
10371: LD_INT 1
10373: PUSH
10374: EMPTY
10375: LIST
10376: LIST
10377: IN
10378: IFFALSE 10403
// SetBName ( b , @ & GetSide ( b ) ) ;
10380: LD_VAR 0 1
10384: PPUSH
10385: LD_STRING @
10387: PUSH
10388: LD_VAR 0 1
10392: PPUSH
10393: CALL_OW 255
10397: STR
10398: PPUSH
10399: CALL_OW 500
// end ;
10403: PPOPN 2
10405: END
// on BuildingCaptured ( b , o , e ) do begin if GetBType ( b ) in [ b_depot , b_warehouse ] then
10406: LD_VAR 0 1
10410: PPUSH
10411: CALL_OW 266
10415: PUSH
10416: LD_INT 0
10418: PUSH
10419: LD_INT 1
10421: PUSH
10422: EMPTY
10423: LIST
10424: LIST
10425: IN
10426: IFFALSE 10451
// SetBName ( b , @ & GetSide ( b ) ) ;
10428: LD_VAR 0 1
10432: PPUSH
10433: LD_STRING @
10435: PUSH
10436: LD_VAR 0 1
10440: PPUSH
10441: CALL_OW 255
10445: STR
10446: PPUSH
10447: CALL_OW 500
// end ;
10451: PPOPN 3
10453: END
// on UnitDestroyed ( unit ) do begin if GetSide ( unit ) = randomedColors [ 1 ] and GetType ( unit ) = unit_building then
10454: LD_VAR 0 1
10458: PPUSH
10459: CALL_OW 255
10463: PUSH
10464: LD_EXP 41
10468: PUSH
10469: LD_INT 1
10471: ARRAY
10472: EQUAL
10473: PUSH
10474: LD_VAR 0 1
10478: PPUSH
10479: CALL_OW 247
10483: PUSH
10484: LD_INT 3
10486: EQUAL
10487: AND
10488: IFFALSE 11180
// begin if GetBType ( unit ) = 31 or GetBType ( unit ) = 32 or GetBType ( unit ) = 36 or GetBType ( unit ) = 0 or GetBType ( unit ) = 24 or GetBType ( unit ) = 17 or GetBType ( unit ) = 25 or GetBType ( unit ) = 19 or GetBType ( unit ) = 20 or GetBType ( unit ) = 18 or GetBType ( unit ) = 21 or GetBType ( unit ) = 23 or GetBType ( unit ) = 16 or GetBType ( unit ) = 6 or GetBType ( unit ) = 29 or GetBType ( unit ) = 26 or GetBType ( unit ) = 30 or GetBType ( unit ) = 28 or GetBType ( unit ) = 27 or GetBType ( unit ) = 33 or GetBType ( unit ) = 2 or GetBType ( unit ) = 4 then
10490: LD_VAR 0 1
10494: PPUSH
10495: CALL_OW 266
10499: PUSH
10500: LD_INT 31
10502: EQUAL
10503: PUSH
10504: LD_VAR 0 1
10508: PPUSH
10509: CALL_OW 266
10513: PUSH
10514: LD_INT 32
10516: EQUAL
10517: OR
10518: PUSH
10519: LD_VAR 0 1
10523: PPUSH
10524: CALL_OW 266
10528: PUSH
10529: LD_INT 36
10531: EQUAL
10532: OR
10533: PUSH
10534: LD_VAR 0 1
10538: PPUSH
10539: CALL_OW 266
10543: PUSH
10544: LD_INT 0
10546: EQUAL
10547: OR
10548: PUSH
10549: LD_VAR 0 1
10553: PPUSH
10554: CALL_OW 266
10558: PUSH
10559: LD_INT 24
10561: EQUAL
10562: OR
10563: PUSH
10564: LD_VAR 0 1
10568: PPUSH
10569: CALL_OW 266
10573: PUSH
10574: LD_INT 17
10576: EQUAL
10577: OR
10578: PUSH
10579: LD_VAR 0 1
10583: PPUSH
10584: CALL_OW 266
10588: PUSH
10589: LD_INT 25
10591: EQUAL
10592: OR
10593: PUSH
10594: LD_VAR 0 1
10598: PPUSH
10599: CALL_OW 266
10603: PUSH
10604: LD_INT 19
10606: EQUAL
10607: OR
10608: PUSH
10609: LD_VAR 0 1
10613: PPUSH
10614: CALL_OW 266
10618: PUSH
10619: LD_INT 20
10621: EQUAL
10622: OR
10623: PUSH
10624: LD_VAR 0 1
10628: PPUSH
10629: CALL_OW 266
10633: PUSH
10634: LD_INT 18
10636: EQUAL
10637: OR
10638: PUSH
10639: LD_VAR 0 1
10643: PPUSH
10644: CALL_OW 266
10648: PUSH
10649: LD_INT 21
10651: EQUAL
10652: OR
10653: PUSH
10654: LD_VAR 0 1
10658: PPUSH
10659: CALL_OW 266
10663: PUSH
10664: LD_INT 23
10666: EQUAL
10667: OR
10668: PUSH
10669: LD_VAR 0 1
10673: PPUSH
10674: CALL_OW 266
10678: PUSH
10679: LD_INT 16
10681: EQUAL
10682: OR
10683: PUSH
10684: LD_VAR 0 1
10688: PPUSH
10689: CALL_OW 266
10693: PUSH
10694: LD_INT 6
10696: EQUAL
10697: OR
10698: PUSH
10699: LD_VAR 0 1
10703: PPUSH
10704: CALL_OW 266
10708: PUSH
10709: LD_INT 29
10711: EQUAL
10712: OR
10713: PUSH
10714: LD_VAR 0 1
10718: PPUSH
10719: CALL_OW 266
10723: PUSH
10724: LD_INT 26
10726: EQUAL
10727: OR
10728: PUSH
10729: LD_VAR 0 1
10733: PPUSH
10734: CALL_OW 266
10738: PUSH
10739: LD_INT 30
10741: EQUAL
10742: OR
10743: PUSH
10744: LD_VAR 0 1
10748: PPUSH
10749: CALL_OW 266
10753: PUSH
10754: LD_INT 28
10756: EQUAL
10757: OR
10758: PUSH
10759: LD_VAR 0 1
10763: PPUSH
10764: CALL_OW 266
10768: PUSH
10769: LD_INT 27
10771: EQUAL
10772: OR
10773: PUSH
10774: LD_VAR 0 1
10778: PPUSH
10779: CALL_OW 266
10783: PUSH
10784: LD_INT 33
10786: EQUAL
10787: OR
10788: PUSH
10789: LD_VAR 0 1
10793: PPUSH
10794: CALL_OW 266
10798: PUSH
10799: LD_INT 2
10801: EQUAL
10802: OR
10803: PUSH
10804: LD_VAR 0 1
10808: PPUSH
10809: CALL_OW 266
10813: PUSH
10814: LD_INT 4
10816: EQUAL
10817: OR
10818: IFFALSE 10904
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ GetBType ( unit ) ;
10820: LD_ADDR_EXP 39
10824: PUSH
10825: LD_EXP 39
10829: PUSH
10830: LD_VAR 0 1
10834: PPUSH
10835: CALL_OW 266
10839: ADD
10840: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
10841: LD_ADDR_EXP 39
10845: PUSH
10846: LD_EXP 39
10850: PUSH
10851: LD_VAR 0 1
10855: PPUSH
10856: CALL_OW 250
10860: ADD
10861: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
10862: LD_ADDR_EXP 39
10866: PUSH
10867: LD_EXP 39
10871: PUSH
10872: LD_VAR 0 1
10876: PPUSH
10877: CALL_OW 251
10881: ADD
10882: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
10883: LD_ADDR_EXP 39
10887: PUSH
10888: LD_EXP 39
10892: PUSH
10893: LD_VAR 0 1
10897: PPUSH
10898: CALL_OW 254
10902: ADD
10903: ST_TO_ADDR
// end ; if GetBType ( unit ) = 1 then
10904: LD_VAR 0 1
10908: PPUSH
10909: CALL_OW 266
10913: PUSH
10914: LD_INT 1
10916: EQUAL
10917: IFFALSE 10996
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 0 ;
10919: LD_ADDR_EXP 39
10923: PUSH
10924: LD_EXP 39
10928: PUSH
10929: LD_INT 0
10931: ADD
10932: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
10933: LD_ADDR_EXP 39
10937: PUSH
10938: LD_EXP 39
10942: PUSH
10943: LD_VAR 0 1
10947: PPUSH
10948: CALL_OW 250
10952: ADD
10953: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
10954: LD_ADDR_EXP 39
10958: PUSH
10959: LD_EXP 39
10963: PUSH
10964: LD_VAR 0 1
10968: PPUSH
10969: CALL_OW 251
10973: ADD
10974: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
10975: LD_ADDR_EXP 39
10979: PUSH
10980: LD_EXP 39
10984: PUSH
10985: LD_VAR 0 1
10989: PPUSH
10990: CALL_OW 254
10994: ADD
10995: ST_TO_ADDR
// end ; if GetBType ( unit ) = 3 then
10996: LD_VAR 0 1
11000: PPUSH
11001: CALL_OW 266
11005: PUSH
11006: LD_INT 3
11008: EQUAL
11009: IFFALSE 11088
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 2 ;
11011: LD_ADDR_EXP 39
11015: PUSH
11016: LD_EXP 39
11020: PUSH
11021: LD_INT 2
11023: ADD
11024: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
11025: LD_ADDR_EXP 39
11029: PUSH
11030: LD_EXP 39
11034: PUSH
11035: LD_VAR 0 1
11039: PPUSH
11040: CALL_OW 250
11044: ADD
11045: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
11046: LD_ADDR_EXP 39
11050: PUSH
11051: LD_EXP 39
11055: PUSH
11056: LD_VAR 0 1
11060: PPUSH
11061: CALL_OW 251
11065: ADD
11066: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
11067: LD_ADDR_EXP 39
11071: PUSH
11072: LD_EXP 39
11076: PUSH
11077: LD_VAR 0 1
11081: PPUSH
11082: CALL_OW 254
11086: ADD
11087: ST_TO_ADDR
// end ; if GetBType ( unit ) = 5 then
11088: LD_VAR 0 1
11092: PPUSH
11093: CALL_OW 266
11097: PUSH
11098: LD_INT 5
11100: EQUAL
11101: IFFALSE 11180
// begin ruDestroyedBuildings = ruDestroyedBuildings ^ 4 ;
11103: LD_ADDR_EXP 39
11107: PUSH
11108: LD_EXP 39
11112: PUSH
11113: LD_INT 4
11115: ADD
11116: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetX ( unit ) ;
11117: LD_ADDR_EXP 39
11121: PUSH
11122: LD_EXP 39
11126: PUSH
11127: LD_VAR 0 1
11131: PPUSH
11132: CALL_OW 250
11136: ADD
11137: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetY ( unit ) ;
11138: LD_ADDR_EXP 39
11142: PUSH
11143: LD_EXP 39
11147: PUSH
11148: LD_VAR 0 1
11152: PPUSH
11153: CALL_OW 251
11157: ADD
11158: ST_TO_ADDR
// ruDestroyedBuildings = ruDestroyedBuildings ^ GetDir ( unit ) ;
11159: LD_ADDR_EXP 39
11163: PUSH
11164: LD_EXP 39
11168: PUSH
11169: LD_VAR 0 1
11173: PPUSH
11174: CALL_OW 254
11178: ADD
11179: ST_TO_ADDR
// end ; end ; end ;
11180: PPOPN 1
11182: END
// on BuildingComplete ( building ) do var i ;
11183: LD_INT 0
11185: PPUSH
// begin if GetSide ( building ) = randomedColors [ 1 ] then
11186: LD_VAR 0 1
11190: PPUSH
11191: CALL_OW 255
11195: PUSH
11196: LD_EXP 41
11200: PUSH
11201: LD_INT 1
11203: ARRAY
11204: EQUAL
11205: IFFALSE 11459
// begin if GetBType ( building ) = 0 or GetBType ( building ) = 2 or GetBType ( building ) = 4 then
11207: LD_VAR 0 1
11211: PPUSH
11212: CALL_OW 266
11216: PUSH
11217: LD_INT 0
11219: EQUAL
11220: PUSH
11221: LD_VAR 0 1
11225: PPUSH
11226: CALL_OW 266
11230: PUSH
11231: LD_INT 2
11233: EQUAL
11234: OR
11235: PUSH
11236: LD_VAR 0 1
11240: PPUSH
11241: CALL_OW 266
11245: PUSH
11246: LD_INT 4
11248: EQUAL
11249: OR
11250: IFFALSE 11261
// ComUpgrade ( building ) ;
11252: LD_VAR 0 1
11256: PPUSH
11257: CALL_OW 146
// if ruDestroyedBuildings > 0 then
11261: LD_EXP 39
11265: PUSH
11266: LD_INT 0
11268: GREATER
11269: IFFALSE 11343
// begin ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
11271: LD_ADDR_EXP 39
11275: PUSH
11276: LD_EXP 39
11280: PPUSH
11281: LD_INT 1
11283: PPUSH
11284: CALL_OW 3
11288: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
11289: LD_ADDR_EXP 39
11293: PUSH
11294: LD_EXP 39
11298: PPUSH
11299: LD_INT 1
11301: PPUSH
11302: CALL_OW 3
11306: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
11307: LD_ADDR_EXP 39
11311: PUSH
11312: LD_EXP 39
11316: PPUSH
11317: LD_INT 1
11319: PPUSH
11320: CALL_OW 3
11324: ST_TO_ADDR
// ruDestroyedBuildings := Delete ( ruDestroyedBuildings , 1 ) ;
11325: LD_ADDR_EXP 39
11329: PUSH
11330: LD_EXP 39
11334: PPUSH
11335: LD_INT 1
11337: PPUSH
11338: CALL_OW 3
11342: ST_TO_ADDR
// end ; if GetBType ( building ) = b_bunker then
11343: LD_VAR 0 1
11347: PPUSH
11348: CALL_OW 266
11352: PUSH
11353: LD_INT 32
11355: EQUAL
11356: IFFALSE 11401
// AddComPlaceWeapon ( building , [ 46 , 45 , 47 , 44 , 43 ] [ Rand ( 1 , 5 ) ] ) ;
11358: LD_VAR 0 1
11362: PPUSH
11363: LD_INT 46
11365: PUSH
11366: LD_INT 45
11368: PUSH
11369: LD_INT 47
11371: PUSH
11372: LD_INT 44
11374: PUSH
11375: LD_INT 43
11377: PUSH
11378: EMPTY
11379: LIST
11380: LIST
11381: LIST
11382: LIST
11383: LIST
11384: PUSH
11385: LD_INT 1
11387: PPUSH
11388: LD_INT 5
11390: PPUSH
11391: CALL_OW 12
11395: ARRAY
11396: PPUSH
11397: CALL_OW 208
// if GetBType ( building ) = b_turret then
11401: LD_VAR 0 1
11405: PPUSH
11406: CALL_OW 266
11410: PUSH
11411: LD_INT 33
11413: EQUAL
11414: IFFALSE 11459
// AddComPlaceWeapon ( building , [ 46 , 45 , 47 , 44 , 43 ] [ Rand ( 1 , 5 ) ] ) ;
11416: LD_VAR 0 1
11420: PPUSH
11421: LD_INT 46
11423: PUSH
11424: LD_INT 45
11426: PUSH
11427: LD_INT 47
11429: PUSH
11430: LD_INT 44
11432: PUSH
11433: LD_INT 43
11435: PUSH
11436: EMPTY
11437: LIST
11438: LIST
11439: LIST
11440: LIST
11441: LIST
11442: PUSH
11443: LD_INT 1
11445: PPUSH
11446: LD_INT 5
11448: PPUSH
11449: CALL_OW 12
11453: ARRAY
11454: PPUSH
11455: CALL_OW 208
// end ; end ; end_of_file
11459: PPOPN 2
11461: END
// every 1 1$0 + 0 0$0.3 marked 10 do
11462: GO 11464
11464: DISABLE
// begin CreateCratesAnywhere ( Rand ( 4 , 5 ) , true ) ;
11465: LD_INT 4
11467: PPUSH
11468: LD_INT 5
11470: PPUSH
11471: CALL_OW 12
11475: PPUSH
11476: LD_INT 1
11478: PPUSH
11479: CALL_OW 57
// enable ;
11483: ENABLE
// end ;
11484: END
// every 0 0$1 + 0 0$0.6 marked 10 do var i , amount ;
11485: GO 11487
11487: DISABLE
11488: LD_INT 0
11490: PPUSH
11491: PPUSH
// begin case tick of 1 .. 1 1$0 :
11492: LD_OWVAR 1
11496: PUSH
11497: LD_INT 1
11499: DOUBLE
11500: GREATEREQUAL
11501: IFFALSE 11509
11503: LD_INT 2100
11505: DOUBLE
11506: LESSEQUAL
11507: IFTRUE 11511
11509: GO 11539
11511: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$10 , 0 0$30 ) ) ; 1 1$0 + 1 .. 5 5$0 :
11512: LD_EXP 15
11516: PUSH
11517: LD_INT 100
11519: DIVREAL
11520: PUSH
11521: LD_INT 350
11523: PPUSH
11524: LD_INT 1050
11526: PPUSH
11527: CALL_OW 12
11531: MUL
11532: PPUSH
11533: CALL_OW 67
11537: GO 11841
11539: LD_INT 2100
11541: PUSH
11542: LD_INT 1
11544: PLUS
11545: DOUBLE
11546: GREATEREQUAL
11547: IFFALSE 11555
11549: LD_INT 10500
11551: DOUBLE
11552: LESSEQUAL
11553: IFTRUE 11557
11555: GO 11585
11557: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$30 , 0 0$45 ) ) ; 5 5$0 + 1 .. 10 10$0 :
11558: LD_EXP 15
11562: PUSH
11563: LD_INT 100
11565: DIVREAL
11566: PUSH
11567: LD_INT 1050
11569: PPUSH
11570: LD_INT 1575
11572: PPUSH
11573: CALL_OW 12
11577: MUL
11578: PPUSH
11579: CALL_OW 67
11583: GO 11841
11585: LD_INT 10500
11587: PUSH
11588: LD_INT 1
11590: PLUS
11591: DOUBLE
11592: GREATEREQUAL
11593: IFFALSE 11601
11595: LD_INT 21000
11597: DOUBLE
11598: LESSEQUAL
11599: IFTRUE 11603
11601: GO 11631
11603: POP
// Wait ( shipments_density / 100 * Rand ( 0 0$45 , 1 1$0 ) ) ; 10 10$0 + 1 .. 20 20$0 :
11604: LD_EXP 15
11608: PUSH
11609: LD_INT 100
11611: DIVREAL
11612: PUSH
11613: LD_INT 1575
11615: PPUSH
11616: LD_INT 2100
11618: PPUSH
11619: CALL_OW 12
11623: MUL
11624: PPUSH
11625: CALL_OW 67
11629: GO 11841
11631: LD_INT 21000
11633: PUSH
11634: LD_INT 1
11636: PLUS
11637: DOUBLE
11638: GREATEREQUAL
11639: IFFALSE 11647
11641: LD_INT 42000
11643: DOUBLE
11644: LESSEQUAL
11645: IFTRUE 11649
11647: GO 11677
11649: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$0 , 1 1$15 ) ) ; 20 20$0 + 1 .. 30 30$0 :
11650: LD_EXP 15
11654: PUSH
11655: LD_INT 100
11657: DIVREAL
11658: PUSH
11659: LD_INT 2100
11661: PPUSH
11662: LD_INT 2625
11664: PPUSH
11665: CALL_OW 12
11669: MUL
11670: PPUSH
11671: CALL_OW 67
11675: GO 11841
11677: LD_INT 42000
11679: PUSH
11680: LD_INT 1
11682: PLUS
11683: DOUBLE
11684: GREATEREQUAL
11685: IFFALSE 11693
11687: LD_INT 63000
11689: DOUBLE
11690: LESSEQUAL
11691: IFTRUE 11695
11693: GO 11723
11695: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$15 , 1 1$30 ) ) ; 30 30$0 + 1 .. 50 50$0 :
11696: LD_EXP 15
11700: PUSH
11701: LD_INT 100
11703: DIVREAL
11704: PUSH
11705: LD_INT 2625
11707: PPUSH
11708: LD_INT 3150
11710: PPUSH
11711: CALL_OW 12
11715: MUL
11716: PPUSH
11717: CALL_OW 67
11721: GO 11841
11723: LD_INT 63000
11725: PUSH
11726: LD_INT 1
11728: PLUS
11729: DOUBLE
11730: GREATEREQUAL
11731: IFFALSE 11739
11733: LD_INT 105000
11735: DOUBLE
11736: LESSEQUAL
11737: IFTRUE 11741
11739: GO 11769
11741: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$30 , 1 1$45 ) ) ; 50 50$0 + 1 .. 300 300$0 :
11742: LD_EXP 15
11746: PUSH
11747: LD_INT 100
11749: DIVREAL
11750: PUSH
11751: LD_INT 3150
11753: PPUSH
11754: LD_INT 3675
11756: PPUSH
11757: CALL_OW 12
11761: MUL
11762: PPUSH
11763: CALL_OW 67
11767: GO 11841
11769: LD_INT 105000
11771: PUSH
11772: LD_INT 1
11774: PLUS
11775: DOUBLE
11776: GREATEREQUAL
11777: IFFALSE 11785
11779: LD_INT 630000
11781: DOUBLE
11782: LESSEQUAL
11783: IFTRUE 11787
11785: GO 11815
11787: POP
// Wait ( shipments_density / 100 * Rand ( 1 1$45 , 2 2$0 ) ) ; else
11788: LD_EXP 15
11792: PUSH
11793: LD_INT 100
11795: DIVREAL
11796: PUSH
11797: LD_INT 3675
11799: PPUSH
11800: LD_INT 4200
11802: PPUSH
11803: CALL_OW 12
11807: MUL
11808: PPUSH
11809: CALL_OW 67
11813: GO 11841
11815: POP
// Wait ( shipments_density / 100 * Rand ( 2 2$0 , 2 2$30 ) ) ; end ;
11816: LD_EXP 15
11820: PUSH
11821: LD_INT 100
11823: DIVREAL
11824: PUSH
11825: LD_INT 4200
11827: PPUSH
11828: LD_INT 5250
11830: PPUSH
11831: CALL_OW 12
11835: MUL
11836: PPUSH
11837: CALL_OW 67
// amount := Rand ( 3 , 5 ) ;
11841: LD_ADDR_VAR 0 2
11845: PUSH
11846: LD_INT 3
11848: PPUSH
11849: LD_INT 5
11851: PPUSH
11852: CALL_OW 12
11856: ST_TO_ADDR
// for i in ( Side_Positions diff [ 0 ] ) do
11857: LD_ADDR_VAR 0 1
11861: PUSH
11862: LD_EXP 25
11866: PUSH
11867: LD_INT 0
11869: PUSH
11870: EMPTY
11871: LIST
11872: DIFF
11873: PUSH
11874: FOR_IN
11875: IFFALSE 11924
// CreateCratesXYR ( amount , start_def [ i ] [ 1 ] , start_def [ i ] [ 2 ] , 20 , true ) ;
11877: LD_VAR 0 2
11881: PPUSH
11882: LD_EXP 31
11886: PUSH
11887: LD_VAR 0 1
11891: ARRAY
11892: PUSH
11893: LD_INT 1
11895: ARRAY
11896: PPUSH
11897: LD_EXP 31
11901: PUSH
11902: LD_VAR 0 1
11906: ARRAY
11907: PUSH
11908: LD_INT 2
11910: ARRAY
11911: PPUSH
11912: LD_INT 20
11914: PPUSH
11915: LD_INT 1
11917: PPUSH
11918: CALL_OW 56
11922: GO 11874
11924: POP
11925: POP
// enable ;
11926: ENABLE
// end ;
11927: PPOPN 2
11929: END
// every 0 0$20 + 0 0$0.9 marked 10 do var i , filter ;
11930: GO 11932
11932: DISABLE
11933: LD_INT 0
11935: PPUSH
11936: PPUSH
// begin if GetResourceArea ( MZBaseArea , mat_cans ) < ( ( 200 - shipments_density ) / 100 * 5 ) then
11937: LD_INT 6
11939: PPUSH
11940: LD_INT 1
11942: PPUSH
11943: CALL_OW 287
11947: PUSH
11948: LD_INT 200
11950: PUSH
11951: LD_EXP 15
11955: MINUS
11956: PUSH
11957: LD_INT 100
11959: DIVREAL
11960: PUSH
11961: LD_INT 5
11963: MUL
11964: LESS
11965: IFFALSE 11988
// CreateCratesArea ( Rand ( 3 , 5 ) , MZBaseArea , true ) ;
11967: LD_INT 3
11969: PPUSH
11970: LD_INT 5
11972: PPUSH
11973: CALL_OW 12
11977: PPUSH
11978: LD_INT 6
11980: PPUSH
11981: LD_INT 1
11983: PPUSH
11984: CALL_OW 55
// enable ;
11988: ENABLE
// end ; end_of_file
11989: PPOPN 2
11991: END
// every 0 0$1 do
11992: GO 11994
11994: DISABLE
// begin ResAllTechs ( randomedColors [ 1 ] , rulab1 , 3 ) ;
11995: LD_EXP 41
11999: PUSH
12000: LD_INT 1
12002: ARRAY
12003: PPUSH
12004: LD_INT 36
12006: PPUSH
12007: LD_INT 3
12009: PPUSH
12010: CALL 5794 0 3
// ResAllTechs ( randomedColors [ 1 ] , rulab2 , 3 ) ;
12014: LD_EXP 41
12018: PUSH
12019: LD_INT 1
12021: ARRAY
12022: PPUSH
12023: LD_INT 35
12025: PPUSH
12026: LD_INT 3
12028: PPUSH
12029: CALL 5794 0 3
// ResAllTechs ( randomedColors [ 1 ] , rulab3 , 3 ) ;
12033: LD_EXP 41
12037: PUSH
12038: LD_INT 1
12040: ARRAY
12041: PPUSH
12042: LD_INT 48
12044: PPUSH
12045: LD_INT 3
12047: PPUSH
12048: CALL 5794 0 3
// end ;
12052: END
// every 0 0$1 trigger FilterAllUnits ( [ f_side , randomedColors [ 1 ] ] ) > 0 do
12053: LD_INT 22
12055: PUSH
12056: LD_EXP 41
12060: PUSH
12061: LD_INT 1
12063: ARRAY
12064: PUSH
12065: EMPTY
12066: LIST
12067: LIST
12068: PPUSH
12069: CALL_OW 69
12073: PUSH
12074: LD_INT 0
12076: GREATER
12077: IFFALSE 12257
12079: GO 12081
12081: DISABLE
// begin EnterBunkerOrBarrack ( randomedColors [ 1 ] , RuBaseArea1 ) ;
12082: LD_EXP 41
12086: PUSH
12087: LD_INT 1
12089: ARRAY
12090: PPUSH
12091: LD_INT 3
12093: PPUSH
12094: CALL 5879 0 2
// EnterBunkerOrBarrack ( randomedColors [ 1 ] , RuBaseArea2 ) ;
12098: LD_EXP 41
12102: PUSH
12103: LD_INT 1
12105: ARRAY
12106: PPUSH
12107: LD_INT 4
12109: PPUSH
12110: CALL 5879 0 2
// EnterBunkerOrBarrack ( randomedColors [ 1 ] , RuBaseArea3 ) ;
12114: LD_EXP 41
12118: PUSH
12119: LD_INT 1
12121: ARRAY
12122: PPUSH
12123: LD_INT 5
12125: PPUSH
12126: CALL 5879 0 2
// RepairAndRebuildBase ( randomedColors [ 1 ] , rudepot1 , RuBaseArea1 , rudestroyedBuildings ) ;
12130: LD_EXP 41
12134: PUSH
12135: LD_INT 1
12137: ARRAY
12138: PPUSH
12139: LD_INT 13
12141: PPUSH
12142: LD_INT 3
12144: PPUSH
12145: LD_EXP 39
12149: PPUSH
12150: CALL 6282 0 4
// RepairAndRebuildBase ( randomedColors [ 1 ] , rudepot2 , RuBaseArea2 , rudestroyedBuildings ) ;
12154: LD_EXP 41
12158: PUSH
12159: LD_INT 1
12161: ARRAY
12162: PPUSH
12163: LD_INT 18
12165: PPUSH
12166: LD_INT 4
12168: PPUSH
12169: LD_EXP 39
12173: PPUSH
12174: CALL 6282 0 4
// RepairAndRebuildBase ( randomedColors [ 1 ] , rudepot3 , RuBaseArea3 , rudestroyedBuildings ) ;
12178: LD_EXP 41
12182: PUSH
12183: LD_INT 1
12185: ARRAY
12186: PPUSH
12187: LD_INT 41
12189: PPUSH
12190: LD_INT 5
12192: PPUSH
12193: LD_EXP 39
12197: PPUSH
12198: CALL 6282 0 4
// HealUnitInBase ( randomedColors [ 1 ] , RuHealArea , RuBaseArea2 , [ rulab1 , rulab2 ] ) ;
12202: LD_EXP 41
12206: PUSH
12207: LD_INT 1
12209: ARRAY
12210: PPUSH
12211: LD_INT 7
12213: PPUSH
12214: LD_INT 4
12216: PPUSH
12217: LD_INT 36
12219: PUSH
12220: LD_INT 35
12222: PUSH
12223: EMPTY
12224: LIST
12225: LIST
12226: PPUSH
12227: CALL 6620 0 4
// HealUnitInBase ( randomedColors [ 1 ] , RuHealArea2 , RuBaseArea3 , [ rulab3 ] ) ;
12231: LD_EXP 41
12235: PUSH
12236: LD_INT 1
12238: ARRAY
12239: PPUSH
12240: LD_INT 10
12242: PPUSH
12243: LD_INT 5
12245: PPUSH
12246: LD_INT 48
12248: PUSH
12249: EMPTY
12250: LIST
12251: PPUSH
12252: CALL 6620 0 4
// enable ;
12256: ENABLE
// end ;
12257: END
// every 6 6$0 + 5 5$0 do
12258: GO 12260
12260: DISABLE
// begin AddComConstruct ( rufab1 , 22 , 1 , 1 , [ 42 , 43 , 44 ] [ Rand ( 1 , 3 ) ] ) ;
12261: LD_INT 6
12263: PPUSH
12264: LD_INT 22
12266: PPUSH
12267: LD_INT 1
12269: PPUSH
12270: LD_INT 1
12272: PPUSH
12273: LD_INT 42
12275: PUSH
12276: LD_INT 43
12278: PUSH
12279: LD_INT 44
12281: PUSH
12282: EMPTY
12283: LIST
12284: LIST
12285: LIST
12286: PUSH
12287: LD_INT 1
12289: PPUSH
12290: LD_INT 3
12292: PPUSH
12293: CALL_OW 12
12297: ARRAY
12298: PPUSH
12299: CALL_OW 185
// AddComConstruct ( rufab1 , 22 , 1 , 1 , [ 42 , 43 , 44 ] [ Rand ( 1 , 3 ) ] ) ;
12303: LD_INT 6
12305: PPUSH
12306: LD_INT 22
12308: PPUSH
12309: LD_INT 1
12311: PPUSH
12312: LD_INT 1
12314: PPUSH
12315: LD_INT 42
12317: PUSH
12318: LD_INT 43
12320: PUSH
12321: LD_INT 44
12323: PUSH
12324: EMPTY
12325: LIST
12326: LIST
12327: LIST
12328: PUSH
12329: LD_INT 1
12331: PPUSH
12332: LD_INT 3
12334: PPUSH
12335: CALL_OW 12
12339: ARRAY
12340: PPUSH
12341: CALL_OW 185
// AddComConstruct ( rufab2 , 22 , 1 , 1 , [ 42 , 43 , 44 ] [ Rand ( 1 , 3 ) ] ) ;
12345: LD_INT 19
12347: PPUSH
12348: LD_INT 22
12350: PPUSH
12351: LD_INT 1
12353: PPUSH
12354: LD_INT 1
12356: PPUSH
12357: LD_INT 42
12359: PUSH
12360: LD_INT 43
12362: PUSH
12363: LD_INT 44
12365: PUSH
12366: EMPTY
12367: LIST
12368: LIST
12369: LIST
12370: PUSH
12371: LD_INT 1
12373: PPUSH
12374: LD_INT 3
12376: PPUSH
12377: CALL_OW 12
12381: ARRAY
12382: PPUSH
12383: CALL_OW 185
// AddComConstruct ( rufab2 , 22 , 1 , 1 , [ 42 , 43 , 44 ] [ Rand ( 1 , 3 ) ] ) ;
12387: LD_INT 19
12389: PPUSH
12390: LD_INT 22
12392: PPUSH
12393: LD_INT 1
12395: PPUSH
12396: LD_INT 1
12398: PPUSH
12399: LD_INT 42
12401: PUSH
12402: LD_INT 43
12404: PUSH
12405: LD_INT 44
12407: PUSH
12408: EMPTY
12409: LIST
12410: LIST
12411: LIST
12412: PUSH
12413: LD_INT 1
12415: PPUSH
12416: LD_INT 3
12418: PPUSH
12419: CALL_OW 12
12423: ARRAY
12424: PPUSH
12425: CALL_OW 185
// AddComConstruct ( rufab3 , 22 , 1 , 1 , [ 42 , 43 , 44 ] [ Rand ( 1 , 3 ) ] ) ;
12429: LD_INT 46
12431: PPUSH
12432: LD_INT 22
12434: PPUSH
12435: LD_INT 1
12437: PPUSH
12438: LD_INT 1
12440: PPUSH
12441: LD_INT 42
12443: PUSH
12444: LD_INT 43
12446: PUSH
12447: LD_INT 44
12449: PUSH
12450: EMPTY
12451: LIST
12452: LIST
12453: LIST
12454: PUSH
12455: LD_INT 1
12457: PPUSH
12458: LD_INT 3
12460: PPUSH
12461: CALL_OW 12
12465: ARRAY
12466: PPUSH
12467: CALL_OW 185
// AddComConstruct ( rufab3 , 22 , 1 , 1 , [ 42 , 43 , 44 ] [ Rand ( 1 , 3 ) ] ) ;
12471: LD_INT 46
12473: PPUSH
12474: LD_INT 22
12476: PPUSH
12477: LD_INT 1
12479: PPUSH
12480: LD_INT 1
12482: PPUSH
12483: LD_INT 42
12485: PUSH
12486: LD_INT 43
12488: PUSH
12489: LD_INT 44
12491: PUSH
12492: EMPTY
12493: LIST
12494: LIST
12495: LIST
12496: PUSH
12497: LD_INT 1
12499: PPUSH
12500: LD_INT 3
12502: PPUSH
12503: CALL_OW 12
12507: ARRAY
12508: PPUSH
12509: CALL_OW 185
// enable ;
12513: ENABLE
// end ;
12514: END
// every 0 0$1 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_type , unit_vehicle ] , [ f_lives , 250 ] ] ) >= FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] , [ f_btype , b_factory ] , [ f_lives , 250 ] ] ) * 2 do
12515: LD_INT 22
12517: PUSH
12518: LD_EXP 41
12522: PUSH
12523: LD_INT 1
12525: ARRAY
12526: PUSH
12527: EMPTY
12528: LIST
12529: LIST
12530: PUSH
12531: LD_INT 21
12533: PUSH
12534: LD_INT 2
12536: PUSH
12537: EMPTY
12538: LIST
12539: LIST
12540: PUSH
12541: LD_INT 24
12543: PUSH
12544: LD_INT 250
12546: PUSH
12547: EMPTY
12548: LIST
12549: LIST
12550: PUSH
12551: EMPTY
12552: LIST
12553: LIST
12554: LIST
12555: PPUSH
12556: CALL_OW 69
12560: PUSH
12561: LD_INT 22
12563: PUSH
12564: LD_EXP 41
12568: PUSH
12569: LD_INT 1
12571: ARRAY
12572: PUSH
12573: EMPTY
12574: LIST
12575: LIST
12576: PUSH
12577: LD_INT 30
12579: PUSH
12580: LD_INT 3
12582: PUSH
12583: EMPTY
12584: LIST
12585: LIST
12586: PUSH
12587: LD_INT 24
12589: PUSH
12590: LD_INT 250
12592: PUSH
12593: EMPTY
12594: LIST
12595: LIST
12596: PUSH
12597: EMPTY
12598: LIST
12599: LIST
12600: LIST
12601: PPUSH
12602: CALL_OW 69
12606: PUSH
12607: LD_INT 2
12609: MUL
12610: GREATEREQUAL
12611: IFFALSE 12804
12613: GO 12615
12615: DISABLE
// begin EnemyVehicleAttack ( randomedColors [ 1 ] ) ;
12616: LD_EXP 41
12620: PUSH
12621: LD_INT 1
12623: ARRAY
12624: PPUSH
12625: CALL 7216 0 1
// if GetSide ( rufab1 ) = randomedColors [ 1 ] and IsOk ( rufab1 ) then
12629: LD_INT 6
12631: PPUSH
12632: CALL_OW 255
12636: PUSH
12637: LD_EXP 41
12641: PUSH
12642: LD_INT 1
12644: ARRAY
12645: EQUAL
12646: PUSH
12647: LD_INT 6
12649: PPUSH
12650: CALL_OW 302
12654: AND
12655: IFFALSE 12687
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab1 , difficulty_level , 3 , 2 ) ;
12657: LD_EXP 41
12661: PUSH
12662: LD_INT 1
12664: ARRAY
12665: PPUSH
12666: LD_INT 3
12668: PPUSH
12669: LD_INT 6
12671: PPUSH
12672: LD_EXP 38
12676: PPUSH
12677: LD_INT 3
12679: PPUSH
12680: LD_INT 2
12682: PPUSH
12683: CALL 5621 0 6
// if GetSide ( rufab2 ) = randomedColors [ 1 ] and IsOk ( rufab2 ) then
12687: LD_INT 19
12689: PPUSH
12690: CALL_OW 255
12694: PUSH
12695: LD_EXP 41
12699: PUSH
12700: LD_INT 1
12702: ARRAY
12703: EQUAL
12704: PUSH
12705: LD_INT 19
12707: PPUSH
12708: CALL_OW 302
12712: AND
12713: IFFALSE 12745
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab2 , difficulty_level , 3 , 2 ) ;
12715: LD_EXP 41
12719: PUSH
12720: LD_INT 1
12722: ARRAY
12723: PPUSH
12724: LD_INT 3
12726: PPUSH
12727: LD_INT 19
12729: PPUSH
12730: LD_EXP 38
12734: PPUSH
12735: LD_INT 3
12737: PPUSH
12738: LD_INT 2
12740: PPUSH
12741: CALL 5621 0 6
// if GetSide ( rufab3 ) = randomedColors [ 1 ] and IsOk ( rufab3 ) then
12745: LD_INT 46
12747: PPUSH
12748: CALL_OW 255
12752: PUSH
12753: LD_EXP 41
12757: PUSH
12758: LD_INT 1
12760: ARRAY
12761: EQUAL
12762: PUSH
12763: LD_INT 46
12765: PPUSH
12766: CALL_OW 302
12770: AND
12771: IFFALSE 12803
// MultiplayerRespawnInside ( randomedColors [ 1 ] , 3 , rufab3 , difficulty_level , 3 , 2 ) ;
12773: LD_EXP 41
12777: PUSH
12778: LD_INT 1
12780: ARRAY
12781: PPUSH
12782: LD_INT 3
12784: PPUSH
12785: LD_INT 46
12787: PPUSH
12788: LD_EXP 38
12792: PPUSH
12793: LD_INT 3
12795: PPUSH
12796: LD_INT 2
12798: PPUSH
12799: CALL 5621 0 6
// enable ;
12803: ENABLE
// end ;
12804: END
// every 20 20$0 do var rnd ;
12805: GO 12807
12807: DISABLE
12808: LD_INT 0
12810: PPUSH
// begin rnd = [ AttackSpawn1 , AttackSpawn2 ] [ Rand ( 1 , 2 ) ] ;
12811: LD_ADDR_VAR 0 1
12815: PUSH
12816: LD_INT 1
12818: PUSH
12819: LD_INT 2
12821: PUSH
12822: EMPTY
12823: LIST
12824: LIST
12825: PUSH
12826: LD_INT 1
12828: PPUSH
12829: LD_INT 2
12831: PPUSH
12832: CALL_OW 12
12836: ARRAY
12837: ST_TO_ADDR
// RespawnAttackVehicle ( rnd , randomedColors [ 2 ] , 5 , difficulty_level , 3 , 1 , [ 1 , 1 ] , [ 44 , 43 , 42 ] , [ ] , [ ] , 1 ) ;
12838: LD_VAR 0 1
12842: PPUSH
12843: LD_EXP 41
12847: PUSH
12848: LD_INT 2
12850: ARRAY
12851: PPUSH
12852: LD_INT 5
12854: PPUSH
12855: LD_EXP 38
12859: PPUSH
12860: LD_INT 3
12862: PPUSH
12863: LD_INT 1
12865: PPUSH
12866: LD_INT 1
12868: PUSH
12869: LD_INT 1
12871: PUSH
12872: EMPTY
12873: LIST
12874: LIST
12875: PPUSH
12876: LD_INT 44
12878: PUSH
12879: LD_INT 43
12881: PUSH
12882: LD_INT 42
12884: PUSH
12885: EMPTY
12886: LIST
12887: LIST
12888: LIST
12889: PPUSH
12890: EMPTY
12891: PPUSH
12892: EMPTY
12893: PPUSH
12894: LD_INT 1
12896: PPUSH
12897: CALL 7529 0 11
// enable ;
12901: ENABLE
// end ;
12902: PPOPN 1
12904: END
// every 20 20$0 do var rnd ;
12905: GO 12907
12907: DISABLE
12908: LD_INT 0
12910: PPUSH
// begin rnd = [ AttackSpawn1 , AttackSpawn2 ] [ Rand ( 1 , 2 ) ] ;
12911: LD_ADDR_VAR 0 1
12915: PUSH
12916: LD_INT 1
12918: PUSH
12919: LD_INT 2
12921: PUSH
12922: EMPTY
12923: LIST
12924: LIST
12925: PUSH
12926: LD_INT 1
12928: PPUSH
12929: LD_INT 2
12931: PPUSH
12932: CALL_OW 12
12936: ARRAY
12937: ST_TO_ADDR
// RespawnAttackInfantry ( randomedColors [ 2 ] , 3 , 7 , 0 , 0 , 0 , 0 , difficulty_level , rnd , rnd , 1 ) ;
12938: LD_EXP 41
12942: PUSH
12943: LD_INT 2
12945: ARRAY
12946: PPUSH
12947: LD_INT 3
12949: PPUSH
12950: LD_INT 7
12952: PPUSH
12953: LD_INT 0
12955: PPUSH
12956: LD_INT 0
12958: PPUSH
12959: LD_INT 0
12961: PPUSH
12962: LD_INT 0
12964: PPUSH
12965: LD_EXP 38
12969: PPUSH
12970: LD_VAR 0 1
12974: PPUSH
12975: LD_VAR 0 1
12979: PPUSH
12980: LD_INT 1
12982: PPUSH
12983: CALL 9224 0 11
// enable ;
12987: ENABLE
// end ; end_of_file
12988: PPOPN 1
12990: END
// function apeman_init ; begin
12991: LD_INT 0
12993: PPUSH
// uc_side := 0 ;
12994: LD_ADDR_OWVAR 20
12998: PUSH
12999: LD_INT 0
13001: ST_TO_ADDR
// uc_nation := nation_nature ;
13002: LD_ADDR_OWVAR 21
13006: PUSH
13007: LD_INT 0
13009: ST_TO_ADDR
// hc_class := class_apeman ;
13010: LD_ADDR_OWVAR 28
13014: PUSH
13015: LD_INT 12
13017: ST_TO_ADDR
// if hc_attr [ 2 ] < 12 then
13018: LD_OWVAR 29
13022: PUSH
13023: LD_INT 2
13025: ARRAY
13026: PUSH
13027: LD_INT 12
13029: LESS
13030: IFFALSE 13069
// hc_attr = [ hc_attr [ 1 ] + 5 , hc_attr [ 2 ] + 1 ] else
13032: LD_ADDR_OWVAR 29
13036: PUSH
13037: LD_OWVAR 29
13041: PUSH
13042: LD_INT 1
13044: ARRAY
13045: PUSH
13046: LD_INT 5
13048: PLUS
13049: PUSH
13050: LD_OWVAR 29
13054: PUSH
13055: LD_INT 2
13057: ARRAY
13058: PUSH
13059: LD_INT 1
13061: PLUS
13062: PUSH
13063: EMPTY
13064: LIST
13065: LIST
13066: ST_TO_ADDR
13067: GO 13100
// hc_attr = [ hc_attr [ 1 ] + 5 , hc_attr [ 2 ] ] ;
13069: LD_ADDR_OWVAR 29
13073: PUSH
13074: LD_OWVAR 29
13078: PUSH
13079: LD_INT 1
13081: ARRAY
13082: PUSH
13083: LD_INT 5
13085: PLUS
13086: PUSH
13087: LD_OWVAR 29
13091: PUSH
13092: LD_INT 2
13094: ARRAY
13095: PUSH
13096: EMPTY
13097: LIST
13098: LIST
13099: ST_TO_ADDR
// hc_sex := sex_male ;
13100: LD_ADDR_OWVAR 27
13104: PUSH
13105: LD_INT 1
13107: ST_TO_ADDR
// hc_importance := 0 ;
13108: LD_ADDR_OWVAR 32
13112: PUSH
13113: LD_INT 0
13115: ST_TO_ADDR
// hc_agressivity := Rand ( - 20 , 20 ) ;
13116: LD_ADDR_OWVAR 35
13120: PUSH
13121: LD_INT 20
13123: NEG
13124: PPUSH
13125: LD_INT 20
13127: PPUSH
13128: CALL_OW 12
13132: ST_TO_ADDR
// end ;
13133: LD_VAR 0 1
13137: RET
// function prepare_apemen ; var i , j , un , ape , first , d1 , d2 ; begin
13138: LD_INT 0
13140: PPUSH
13141: PPUSH
13142: PPUSH
13143: PPUSH
13144: PPUSH
13145: PPUSH
13146: PPUSH
13147: PPUSH
// if not amount_of_apemen then
13148: LD_EXP 17
13152: NOT
13153: IFFALSE 13157
// exit ;
13155: GO 13257
// ape := 0 ;
13157: LD_ADDR_VAR 0 5
13161: PUSH
13162: LD_INT 0
13164: ST_TO_ADDR
// repeat Wait ( ( ape + 1 ) * Rand ( 0 0$10 , 1 1$0 ) ) ;
13165: LD_VAR 0 5
13169: PUSH
13170: LD_INT 1
13172: PLUS
13173: PUSH
13174: LD_INT 350
13176: PPUSH
13177: LD_INT 2100
13179: PPUSH
13180: CALL_OW 12
13184: MUL
13185: PPUSH
13186: CALL_OW 67
// apeman_init ;
13190: CALL 12991 0 0
// PlaceUnitArea ( CreateHuman , Base1ApeArea , false ) ;
13194: CALL_OW 44
13198: PPUSH
13199: LD_INT 8
13201: PPUSH
13202: LD_INT 0
13204: PPUSH
13205: CALL_OW 49
// PlaceUnitArea ( CreateHuman , Base2ApeArea , false ) ;
13209: CALL_OW 44
13213: PPUSH
13214: LD_INT 9
13216: PPUSH
13217: LD_INT 0
13219: PPUSH
13220: CALL_OW 49
// Wait ( 3 ) ;
13224: LD_INT 3
13226: PPUSH
13227: CALL_OW 67
// ape := ape + 1 ;
13231: LD_ADDR_VAR 0 5
13235: PUSH
13236: LD_VAR 0 5
13240: PUSH
13241: LD_INT 1
13243: PLUS
13244: ST_TO_ADDR
// until ape >= amount_of_apemen ;
13245: LD_VAR 0 5
13249: PUSH
13250: LD_EXP 17
13254: GREATEREQUAL
13255: IFFALSE 13165
// end ;
13257: LD_VAR 0 1
13261: RET
// every 0 0$15 do
13262: GO 13264
13264: DISABLE
// begin prepare_apemen ;
13265: CALL 13138 0 0
// end ; end_of_file
13269: END
// export ExtraStrings ; export function ShowTimer ; var AllStrings ; begin
13270: LD_INT 0
13272: PPUSH
13273: PPUSH
// AllStrings := [ #Multi1x1-Time , tick ] ;
13274: LD_ADDR_VAR 0 2
13278: PUSH
13279: LD_STRING #Multi1x1-Time
13281: PUSH
13282: LD_OWVAR 1
13286: PUSH
13287: EMPTY
13288: LIST
13289: LIST
13290: ST_TO_ADDR
// Display_Strings := AllStrings ;
13291: LD_ADDR_OWVAR 47
13295: PUSH
13296: LD_VAR 0 2
13300: ST_TO_ADDR
// end ;
13301: LD_VAR 0 1
13305: RET
// every 0 0$1 do
13306: GO 13308
13308: DISABLE
// begin ShowTimer ;
13309: CALL 13270 0 0
// enable ;
13313: ENABLE
// end ; end_of_file
13314: END
// every 0 0$10 trigger FilterAllUnits ( [ [ f_side , randomedColors [ 1 ] ] ] ) = 0 do
13315: LD_INT 22
13317: PUSH
13318: LD_EXP 41
13322: PUSH
13323: LD_INT 1
13325: ARRAY
13326: PUSH
13327: EMPTY
13328: LIST
13329: LIST
13330: PUSH
13331: EMPTY
13332: LIST
13333: PPUSH
13334: CALL_OW 69
13338: PUSH
13339: LD_INT 0
13341: EQUAL
13342: IFFALSE 13351
13344: GO 13346
13346: DISABLE
// YouWinInMultiplayer ;
13347: CALL_OW 106
13351: END
